Характеристика подсистемы ввода/вывода в Windows.
Состав:
a) Средства среды разработки (*.dll, окружение)
Формируют запрос
- данные, которые надо вывести
- файл, куда надо вывести
- логический адрес (номер записи, поля)
b) Диспетчер ввода-вывода
Управляет буферами (обеспечивает буферизацию), т.е. данные помещает в буфер и формирует управляющий блок для ввода-вывода – IRP (I/O Request Packet), куда помещается информация для вывода. После формирования запрос передается драйверу.
c) Драйверы устройства ввода-вывода
d) Уровень HAL (Hardware Abstract Layer)
HAL скрывает от драйверов реальное оборудование. Все особенности устройств учитываются на его уровне. Драйвер выполняет операции на физически-абстрактном уровне, который реализуется на уровне HAL, где формируются конкретные команды и выполняются.
e) УВВ
После выполнения операции устройство генерирует прерывание, обработчик которого заносит в IRP информацию об успешности выполнения. Драйвер передает IRP диспетчеру, который обрабатывает и удаляет IRP, сообщая приложению об окончании исполнения запроса.
Диспетчер использует три метода буферизации
- Диспетчер не используется
В этом случае приложение как правило использует режим пересылки.
- Buffered I/O.
Используется статический буферный пул в режиме подстановки, которым он управляет и распределяет между процессами.
- Direct I/O.
Используется режим указания (без использования системных буферов).
Существует несколько типов запросов:
1. Синхронный I/O
Приложение запросив операцию ввода-вывода ждет ее завершения
2. Асинхронный
Приложение запросив операцию ввода-вывода не ждет ее завершения
3. Проецируемый
Файл рассматривается как виртуальное адресное пространство процесса, т.е. образ файла проецируется на оперативную память страницами, а управление происходит средствами управления виртуальной памятью.
4. Непрерывный
Вся операция ввода-вывода должна быть выполнена за одно обращение к устройству. В этом случае используется много буферов, а затем они все выводятся.
HAL возник начиная с Windows 2000, там, где его нет, его функции переносятся в драйвер.
|