Cтраница 1
Ввод-вывод, хотя им часто пренебрегают, является тем не менее важной темой. Существенная часть операционной системы занимается вводом-выводом. Операция ввода-вывода может выполняться тремя способами. Во-первых, при помощи программного ввода-вывода, при котором центральный процессор вводит или выводит каждый байт или слово, находясь в цикле ожидания готовности устройства ввода-вывода. Второй способ представляет собой управляемый прерываниями ввод-вывод, при котором центральный процессор начинает передачу ввода-вывода для символа или слова, после чего переключается на другой процесс, пока прерывание от устройства не сообщит ему об окончании операции ввода-вывода. Третий способ заключается в использовании прямого доступа к памяти ( DMA), при котором отдельная микросхема управляет переносом целого блока данных, и инициирует прерывание только после окончании операции переноса блока. [1]
Ввод-вывод можно разбить на четыре уровня иерархии: процедуры обработки прерываний, драйверы устройств, независимое от устройств программное обеспечение ввода-вывода и библиотеки ввода-вывода и спулеры, работающие в пространстве пользователя. [2]
![]() |
Некоторые из полей типичной таблицы cdevsw. [3] |
Ввод-вывод в операционной системе UNIX реализуется набором драйверов устройств, по одному для каждого типа устройств. Функция драйвера заключается в изолировании остальной части системы от индивидуальных отличительных особенностей аппаратного обеспечения. При помощи стандартных интерфейсов между драйверами и остальной операционной системой большая часть системы ввода-вывода может быть помещена в машинно-независимую часть ядра. [4]
Ввод-вывод осуществляется драйверами устройств, согласующимися с моделью Windows Driver Model. При запуске каждого драйвера инициализируется объект драйвера, содержащий адреса процедур, к которым может обращаться операционная система, чтобы добавить новое устройство или выполнить операцию ввода-вывода. Драйверы могут собираться в стеки или действовать как фильтры. [5]
Ввод-вывод и файловую систему можно отложить на потом, реализовав поначалу лишь примитивный ввод с клавиатуры и вывод на экран для тестирования и отладки. В некоторых случаях следует защитить ключевые низкоуровневые структуры данных, разрешив доступ к ним только с помощью специальных процедур доступа - в результате мы получаем объектно-ориентированное программирование, независимо от того, какой язык программирования применяется в действительности. Когда нижние уровни созданы, они могут быть тщательно протестированы. Таким образом, система создается снизу вверх, подобно тому, как строятся высокие здания. [6]
Ввод-вывод списком вкратце был уже рассмотрен в 1 - й главе. [7]
Ввод-вывод, ориентированный на запись. При вводе-выводе, ориентированном на запись, каждый файл рассматривается как последовательность записей. [8]
Ввод-вывод может быть асинхронным, то есть во время его выполнения могут выполняться другие операторы. Такой режим допускается только для внешних файлов, открытых со спецификатором ASYNCHRONOUS YES-в операторе OPEN или в операторах READ и WRITE. Выполнение оператора асинхронного ввода-вывода инициирует операцию отложенного ввода-вывода, которая завершается операцией ожидания для файла. Она выполняется явно оператором ожидания WAIT или неявно с помощью операторов INQUIRE, CLOSE или операторов позиционирования файлового указателя. [9]
Ввод-вывод в ЭВМ заключается в обмене данными1 между периферийными устройствами машины и ее оперативной памятью. Чаще всего производится ввод ил и вывод группы слов, располагаемых в ОП друг за другом. [10]
Ввод-вывод потоком используется для всех файлов, имеющих описатель STREAM, а также для стандартных файлов SYSIN и SYSPRINT. При вводе-выводе потоком вся информация, содержащаяся в файле, рассматривается как непрерывная строка символов. Переход от одной записи к следующей происходит без вмешательства программиста. [11]
Ввод-вывод осуществляется в машинном коде, поэтому он удобен для файлов, хранимых на лентах и дисках. [12]
Ввод-вывод, не связанный с процессом. Должны быть детализированы требования к вводу-выводу, который относится к процессу, но непосредственно с ним не связан. Эти требования могут включать данные, характеризующие сырье, результаты оптимизационных расчетов, выполняемых на других вычислительных машинах, изменения в условиях производства, специальные отчеты и данные, передаваемые на удаленные участки. Вид отчетов и частота их выдачи важны, так как от этого зависит потребность в дополнительных устройствах вывода, которые в некоторых случаях должны находиться на удалении от места расположения АСУ. [13]
Ввод-вывод для обработки данных осуществляется устройствами и подсистемами, традиционно используемыми в сфере обработки данных, например перфокарточными, перфоленточными и строко-печатающими устройствами, экранными дисплеями, пишущими машинками и графопостроителями. [14]
Ввод-вывод по прерываниям производится по инициативе внешних устройств и вводится помимо выполнения основной программы для организации обработки информации от этих устройств по мере ее поступления. При том МП должен прервать выполнение основной программы и перейти к подпрограмме обработки запроса прерывания. Такой переход осуществляется по мере готовности данных к передаче или приему по сигналу запроса прерывания, после получения которого МП переходит к операциям ввода-вывода. Это положение справедливо для большинства типов МП. Для разрешения или запрета прерываний в ходе выполнения программы МП обладает специальными командами. С помощью таких команд программист может разрешить или запретить прерывание текущей программы в тех местах, где оно в силу каких-либо причин недопустимо. [15]