В разделе 1.7 рассмотрены три способа осуществления ввода-вывода.
• Программируемый ввод-вывод. Процессор посылает необходимые команды контроллеру ввода-вывода; после этого процесс находится в состоянии ожидания завершения операции ввода-вывода.
• Ввод-вывод, управляемый прерываниями. Процессор посылает необходимые команды контроллеру ввода-вывода и продолжает выполнение следующих команд. Выполнение процесса прерывается контроллером ввода- вывода, когда последний выполнит свое задание. Выполняющийся процессором код может быть кодом процесса, обратившегося к устройству ввода- вывода, если нет необходимости в ожидании выполнения операции ввода- вывода. В противном случае процесс приостанавливается до получения прерывания, и процессор переключается на выполнение другого процесса.
• Прямой доступ к памяти. Модуль прямого доступа к памяти управляет обменом данных между основной памятью и контроллером ввода-вывода. Процессор посылает запрос на передачу блока данных модулю прямого доступа к памяти, а прерывание происходит только после передачи всего блока данных.
В табл. 11.1 показана связь между перечисленными способами. В большинстве компьютерных систем основным способом передачи данных, поддерживаемым операционной системой, является прямой доступ к памяти.
Таблица 11.1. Способы ввода-вывода
Без использования С использованием преры- прерываний ваний
Передача данных из устройства Программируемый Ввод-вывод, управляемый ввода-вывода в память с исполь- ввод-вывод прерыванием
зованием процессора
Прямая передача данных из уст- Прямой доступ к памяти
ройства ввода-вывода в память (DMA)
Параллельно с развитием компьютерных систем возрастает сложность и интеллектуальность их отдельных компонентов, что заметнее всего в области ввода-вывода. Этапы развития функциональности устройств ввода-вывода можно охарактеризовать следующим образом.
1. Процессор непосредственно управляет периферийным устройством.
2. К устройству добавляется контроллер или модуль ввода-вывода. Процессор использует программируемый ввод-вывод без прерываний. На этом этапе процессор становится в некоторой степени отделенным от конкретных деталей интерфейсов внешних устройств.
3. Применяется та же конфигурация, что и в пункте 2, только с использованием прерываний. В результате процессору нет необходимости расходовать время на ожидание выполнения операций ввода-вывода, что приводит к увеличению производительности.
4. Модуль ввода-вывода получает возможность непосредственной работы с памятью с использованием DMA. Появляется возможность перемещения блока данных в память или из нее без использования процессора (за исключением моментов начала и окончания передачи данных).
5. Модуль ввода-вывода совершенствуется и становится отдельным процессором, обладающим специализированной системой команд, предназначенных для ввода-вывода. Центральный процессор дает задание процессору ввода- вывода выполнить программу ввода-вывода, находящуюся в основной памяти. Процессор ввода-вывода производит выборку и выполнение соответствующих команд без участия центрального процессора. Такая процедура позволяет центральному процессору определить последовательность выполняемых функций ввода-вывода и быть прерванным только при выполнении всей последовательности.
6. Модуль ввода-вывода обладает своей локальной памятью и является, по сути, отдельным компьютером. При такой архитектуре управление многочисленными устройствами ввода-вывода может осуществляться при минимальном вмешательстве центрального процессора. Обычно такая архитектура используется для управления связью с интерактивными терминалами. Процессор ввода-вывода берет на себя большинство задач, связанных с управлением терминалами.
Если проследить описанный выше путь развития устройств ввода-вывода, то можно заметить, что вмешательство процессора в функции ввода-вывода становится все менее заметным. Центральный процессор все больше и больше освобождается от задач, связанных с вводом-выводом, что приводит к повышению общей производительности. Этапы 5 и 6 отражают изменение концепции устройства ввода-вывода — отныне он способен к самостоятельному выполнению программы.
Обратите внимание на терминологию. Для всех модулей, описанных в пунктах 4-6, вполне применим термин "прямой доступ к памяти", поскольку каждый из них использует непосредственное управление основной памятью модулем ввода-вывода. Модуль ввода-вывода, описанный в пункте 5, часто называется также каналом ввода-вывода, а модуль, описанный в пункте 6, — процессором ввода-вывода. Впрочем, иногда в литературе каждый из этих терминов используется и для описания другого типа устройств. В оставшейся части главы мы используем термин "канал ввода-вывода" для обоих типов модулей ввода-вывода.