Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_СП_2004_1_00.doc
Скачиваний:
69
Добавлен:
04.11.2018
Размер:
882.69 Кб
Скачать

Лекция 6

Ввод и вывод в языке Си: общие концепции. Файлы данных и каталоги файлов. Внутренняя организация и типы файлов. Стандартные функции для работы с файлами и каталогами. Внешние устройства как специальные файлы. Организация обмена со стандартными внешними устройствами. Операции ввода/вывода через порты микропроцессоров Intel 8086/80286.

1. Ввод и вывод в языке си: Общие концепции

При разработке и эксплуатации программного обеспечения операции ввода/вывода играют столь же большую роль, как, например, инструкции управления или способы описания оперативных структур данных. Дело в том, что, с одной стороны, всякая программа, лишенная возможности общения с "внешним миром", оказывается либо недостаточно гибкой по отношению к наборам обрабатываемых ею данных, либо абсолютно бесполезной по причине отсутствия возможности сообщить пользователю о результатах своей работы. С другой стороны, во многих прикладных задачах объемы перерабатываемой информации столь велики, что не может быть и речи о ее одновременном размещении в оперативной памяти ЭВМ и возникает прямая необходимость в непрерывной "подкачке" данных в процессе работы программы. И, наконец, использование одних лишь оперативных структур данных не обеспечивает сохранения информации после выключения питания ЭВМ, ликвидируя тем самым возможность ведения долгосрочных архивов и создания баз знаний. В современных вычислительных системах внешние устройства, с которыми приходится поддерживать обмен, по выполняемым функциям делятся на две категории. Это, во-первых, всевозможные устройства для связи с оператором ЭВМ, как то интерактивные терминалы и телетайпы, принтеры, графопостроители, фотонаборные устройства и т. д. Во-вторых, внешними по отношению к центральной ЭВМ являются накопители информации на магнитных носителях, каковыми чаще всего выступают магнитные диски. Две эти категории периферийных устройств принципиально отличаются тем, что в первом случае передача данных на устройство осуществляется последовательным образом (потоком) и носит, как правило, однонаправленный характер. Во втором же случае обычно имеет место двусторонняя передача информации и достаточно сложная логическая организация данных на магнитном носителе, поддерживаемая специальными компонентами операционной системы и прикладными программами. Одной из основных особенностей языка Си по отношению к большинству других языков программирования высокого уровня является полное отсутствие в нем предопределенных операторов ввода/вывода. Это, однако, ни в коей мере не ограничивает его возможностей по организации больших наборов данных и управлению периферийным оборудованием, ибо все необходимые для этого средства предоставляются функциями из стандартных библиотек языка Си. Более того, подобное отношение к операциям ввода/вывода открывает путь к созданию высоко эффективного и мобильного программного обеспечения, максимально использующего возможности операционной системы по поддержанию внешнего обмена.