Простое включение новых драйверов
Удобный логический интерфейс
Кэширование данных
Организация параллельной работы устройств и процессора
Каждому устройству ввода-вывода соответствует специальное устройство управления – контроллер. Контроллер работает параллельно с процессором и взаимодействует с прикладными программами через посредство особой программы ОС – драйвера.
Подсистема ввода-вывода обслуживает контроллер в реальном масштабе времени, т.е. на уровне электрических сигналов. Для приемлемого уровня реакции все драйверы разделяются на несколько приоритетных уровней. Для реализации приоритетной схемы используется диспетчер прерываний
В общем случае скорость генерации данных и их чтения не совпадают. Для согласования данные вводится буферизация , доступ к которому синхронизируется. Буфер обычно располагается в ОЗУ
При больших объемах ввода - вывода, памяти может не хватать и в таких случаях под буфер используется дисковый файл: спул-файл
Другим решением является оснащение контроллера буферной памятью, соизмеримой с ОЗУ
Буферизация решает и другую задачу - сократить количество реальных обращений к устройствам за счет кэширования (дисковый кэш)
Разделение устройств и данных между процессами
Устройства ввода - вывода могут предоставляться процессам в монопольное или совместное использование.
Устройства типа диск позволяют разграничить доступ с точностью до отдельных порций данных, со своими правами
Другие устройства, например терминал, используется только в монопольном режиме
Принтер не выделяется в монопольное использование, но разграничивает порции выдач разных процессов
Практически все современные ОС поддерживают в качестве основного логического интерфейса файловую модель устройств ввода-вывода, когда любое устройство – последовательность байтов, с которыми можно работать с помощью системных вызовов типа Read, Write
На этой базе строится более сложная модель устройств ввода-вывода, с учетом их специфики
Достоинством любой современной ОС является разнообразие набора драйверов для наиболее популярных устройств и поддержка нескольких файловых систем
Удобный интерфейс между драйверами и другими компонентами ОС, необходим для того, чтобы драйверы писали не только разработчики ОС, но и производители устройств
Существуют два типа интерфейсов:
“драйвер-ядро” (Driver Kernel Interface, DKI) для взаимодействия с ядром ОС и
интерфейс “драйвер-устройство” (Driver Device Interface, DDI) для взаимодействия с контроллером
Для поддержки разработки драйверов обычно выпускается пакет DDK (Driver Development Kit)