End-User запросов ввода-вывода и файлов
Драйверы в режиме ядра скрыты от конечных пользователей защищенной подсистемой, реализующей уже знакомый программный интерфейс, например Windows или POSIX. Устройства видны коду в пользовательском режиме, который включает защищенные подсистемы, только в виде именованных файловых объектов, управляемых диспетчером ввода-вывода.
На следующем рисунке показана связь между конечным пользователем, подсистемой и диспетчером ввода-вывода.
Защищенная подсистема, например подсистема Win32, передает запросы ввода-вывода соответствующему драйверу режима ядра через системные службы ввода-вывода. Подсистема, показанная на предыдущем рисунке, зависит от поддержки драйверов устройств для дисплея, видеоадаптера, клавиатуры и мыши.
Защищенная подсистема изолирует конечных пользователей и приложения от необходимости знать что-либо о компонентах режима ядра, включая драйверы. В свою очередь, диспетчер ввода-вывода изолирует защищенные подсистемы от необходимости знать что-либо о конфигурациях устройств для конкретного компьютера или о реализации драйверов.
Многоуровневый подход диспетчера ввода-вывода также изолирует большинство драйверов от необходимости знать что-нибудь о следующем:
Источник запроса ввода-вывода в какой-либо конкретной защищенной подсистеме, например Win32 или POSIX
Наличие определенных типов драйверов пользовательского режима в данной защищенной подсистеме
Что такое модель ввода-вывода и интерфейс для драйверов любой защищенной подсистемы
Диспетчер ввода-вывода предоставляет драйверы с одной моделью ввода-вывода, набор подпрограмм поддержки режима ядра, которые драйверы могут использовать для выполнения операций ввода-вывода, а также согласованный интерфейс между инициатором запроса ввода-вывода и драйверами, которые должны отвечать на него.
Как показано на предыдущем рисунке, подсистема и ее собственные приложения могут получить доступ к устройству драйвера или файлу на запоминающем устройстве только через дескрипторы файловых объектов, предоставляемые диспетчером ввода-вывода. Чтобы открыть такой объект файла или получить дескриптор ввода-вывода для устройства или файла данных, подсистема вызывает системные службы ввода-вывода с запросом на открытие именованного файла. Именованный файл может иметь зависящий от подсистемы псевдоним (символьная ссылка) на имя режима ядра для объекта файла.
Диспетчер ввода-вывода, который экспортирует эти системные службы, отвечает за поиск или создание объекта файла, представляющего устройство или файл данных, а также за поиск соответствующих драйверов.