Система ввода/вывода
Система ввода/вывода исполнительной системы - это часть
кода ОС, получающая запросы ввода/вывода от процессов пользовательского
режима и передающая их, в преобразованном виде, устройствам ввода/вывода.
Между сервисами пользовательского режима и аппаратурой ввода/вывода располагается
несколько отдельных системных компонентов, включая законченные файловые
системы, многочисленные драйверы устройств и драйверы сетевых транспортов.
Система ввода/вывода управляется пакетами запроса ввода/вывода (I/O Request
Packet, IRP). Каждый запрос ввода/вывода представляется в виде пакета
IRP во время его перехода от одной компоненты системы ввода/вывода к другой.
IRP - это структура данных, управляющая обработкой операции ввода/вывода
на каждой стадии ее выполнения.
В систему ввода/вывода входят следующие компоненты:
- 1. Диспетчер ввода/вывода (I/O manager).
Реализует средства ввода/вывода, не зависящие от типа устройства, и
устанавливает модель для ввода/вывода исполнительной системы. Диспетчер
ввода/вывода осуществляет создание, чтение, запись, установку и получение
информации, и многие другие операции над файловыми объектами. Диспетчер
ввода/вывода реализует асинхронную подсистему ввода/вывода, основанную
на передаче пакетов запроса ввода/вывода (I/O Request Packet, IRP).
Диспетчер ввода/ вывода также отвечает за поддержку и обеспечение операционной
среды для драйверов.
- 2. Файловые системы. Драйверы,
принимающие запросы файлового ввода/вывода и транслирующие их в запросы,
привязанные к конкретному устройству. Сюда же входят сетевые файловые
системы, состоящие из двух компонентов: сетевого редиректора (network
redirector), реализуемого как драйвер файловой системы и передающего
удаленные запросы ввода/вывода на машины в сети, и сетевого сервера
(network server), являющегося обычным драйвером, принимающим и обрабатывающим
такие запросы.
- 3. Сетевые драйверы, которые
могут загружаться в ОС и рассматриваться как часть системы ввода/вывода.
- 4. Драйверы устройств. Низкоуровневые
драйверы, напрямую работающие с оборудованием.
Диспетчер ввода/вывода (I/O manager) определяет порядок,
по которому запросы ввода/вывода доставляются драйверам. В обязанности
диспетчера входит:
- 1. Получение запроса на ввод/вывод и создание пакета IRP.
- 2. Передача IRP соответствующему драйверу. Драйвер, получив IRP,
выполняет указанную в нем операцию ввода/вывода, и, либо возвращает
его диспетчеру ввода/ вывода для завершения обработки, либо передает
другому драйверу для продолжения операции ввода/вывода.
- 3. Сопровождение IRP по стеку драйверов.
- 4. Завершение IRP по окончании операции ввода/вывода и возвращение
результатов обработки инициатору запроса ввода/вывода.
- 5. Также диспетчер ввода/вывода реализует общие процедуры, к которым
обращаются драйверы во время обработки ввода/вывода, и предоставляет
системные сервисы, позволяющие защищенным подсистемам реализовать свои
API ввода/вывода.
|