Простое включение новых драйверов

Удобный логический интерфейс

Кэширование данных

Организация параллельной работы устройств и процессора

Каждому устройству ввода-вывода соответствует специальное устройство управления – контроллер. Контроллер работает параллельно с процессором и взаимодействует с прикладными программами через посредство особой программы ОС – драйвера.

Подсистема ввода-вывода обслуживает контроллер в реальном масштабе времени, т.е. на уровне электрических сигналов. Для приемлемого уровня реакции все драйверы разделяются на несколько приоритетных уровней. Для реализации приоритетной схемы используется диспетчер прерываний

В общем случае скорость генерации данных и их чтения не совпадают. Для согласования данные вводится буферизация , доступ к которому синхронизируется. Буфер обычно располагается в ОЗУ

При больших объемах ввода - вывода, памяти может не хватать и в таких случаях под буфер используется дисковый файл: спул-файл

Другим решением является оснащение контроллера буферной памятью, соизмеримой с ОЗУ

Буферизация решает и другую задачу - сократить количество реальных обращений к устройствам за счет кэширования (дисковый кэш)

Разделение устройств и данных между процессами

Устройства ввода - вывода могут предоставляться процессам в монопольное или совместное использование.

Устройства типа диск позволяют разграничить доступ с точностью до отдельных порций данных, со своими правами

Другие устройства, например терминал, используется только в монопольном режиме

Принтер не выделяется в монопольное использование, но разграничивает порции выдач разных процессов

Практически все современные ОС поддерживают в качестве основного логического интерфейса файловую модель устройств ввода-вывода, когда любое устройство – последовательность байтов, с которыми можно работать с помощью системных вызовов типа Read, Write

На этой базе строится более сложная модель устройств ввода-вывода, с учетом их специфики

Достоинством любой современной ОС является разнообразие набора драйверов для наиболее популярных устройств и поддержка нескольких файловых систем

Удобный интерфейс между драйверами и другими компонентами ОС, необходим для того, чтобы драйверы писали не только разработчики ОС, но и производители устройств

Существуют два типа интерфейсов:

“драйвер-ядро” (Driver Kernel Interface, DKI) для взаимодействия с ядром ОС и

интерфейс “драйвер-устройство” (Driver Device Interface, DDI) для взаимодействия с контроллером

Для поддержки разработки драйверов обычно выпускается пакет DDK (Driver Development Kit)