Основные функции подсистемы ввода-вывода.:
1. Организация параллельной работы устройств ввода-вывода и процессора.
2. Согласование скоростей обмена и кэширование данных.
3. Разделение устройств и данных между процессами.
4.Обеспечение удобного логического интерфейса между устройствами и остальной частью системы.
5. Поддержка широкого спектра драйверов с возможностью простого включения в систему нового драйвера.
6. Динамическая загрузка и выгрузка драйверов.
7. Поддержка нескольких файловых систем.
8. Поддержка синхронных и асинхронных операций ввода-вывода.
Методы организация параллельной работы процессора и устройств ввода-вывода:
1. Процессор непосредственно управляет периферийным устройством.
2.Устройство управляется контроллером. Процессор использует программируемый ввод - вывод без прерываний (переход к абстракции интерфейса ввода - вывода). Процессор посылает необходимые команды контроллеру ввода-вывода и переводит процесс в состояние ожидания завершения операции ввода-вывода.
3. Использование контроллера прерываний. Ввод-вывод, управляемый прерываниями. Процессор посылает необходимые команды контроллеру ввода-вывода и продолжает выполнять процесс, если нет необходимости в ожидании выполнения операции. В противном случае процесс приостанавливается до получения прерывания, а процессор переключается на выполнение другого процесса.
4. Использование модуля (канала) прямого доступа к памяти (direct memory access - DMA). Перемещение данных в память (из нее) без использования процессора.
Модуль прямого доступа к памяти управляет обменом данных между основной памятью и контроллером ввода-вывода. Процессор посылает запрос на передачу блока данных модулю прямого доступа к памяти, а прерывание происходит только после передачи всего блока данных. DMA-контроллер имеет доступ к центральной шине независимо от центрального процессора. Контроллер содержит несколько регистров, доступных ЦП для чтения и записи (регистр адреса памяти, счетчик байтов, управляющие регистры). Управляющие порты задают, какой порт ввода-вывода должен быть использован, направление переноса данных (чтение/запись), единицу переноса (побайтно, пословно) и число байтов, которое надо перенести за 1 операцию. Сначала ЦП программирует DMA-контроллер, устанавливая его регистры, потом ЦП дает команду дисковому контроллеру прочитать данные во внутренний буфер и проверить контрольную сумму. После чего процессор продолжает свою работу, а DMA начинает свою работу. DMA-контроллер запрашивает перенос данных у дискового контроллера (Шаг 2), данные поступают в буфер контроллера, а затем в оперативную память (шаг 3). Когда запись закончена, дисковый контроллер посылает сигнал подтверждения контроллеру DMA (шаг 4). DMA-контроллер увеличивает используемый адрес памяти и уменьшает значение счетчиков байтов. Шаги 2,3,4 повторяются, пока значение счетчика не станет равным 0. тогда DMA-контроллер инициирует прерывание процессора, сообщая о завершении операции ввода-вывода.
5. Использование отдельного специализированного процессора ввода-вывода, управляемого центральным процессором.
6. Использование отдельного компьютера для управления устройствами ввода-вывода при минимальном вмешательстве центрального процессора.