Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы ОС.docx
Скачиваний:
45
Добавлен:
22.09.2019
Размер:
3.18 Mб
Скачать

37. Типы драйверов. Запрос к одноуровневому и многоуровневому драйверу. (Лекция 9)

См. вопрос 36 (начало). Основные типы драйверов :

Функциональные (function) драйверы:

- драйверы классов (class) – ввод-вывод для конкретного класса устройств (диски, накопители/ приводы, интерфейса с пользователем и т.п.).

- минипорт-драйверы (miniport) – учет специфики конкретного устройства.

Драйверы шин (bus, port) – управление контроллерами/адаптерами шин, мостами и т.п.

Фильтры (filter) – позволяют перехватывать и обрабатывать запросы IRP до их получения основным драйвером (upper filter) или после обработки основным драйвером (lower filter)

Структура драйвера

Точка входа – процедуры драйвера, вызываемые диспетчером ввода-вывода

Основные классы точек входа:

- процедуры диспетчеризации – чтение, запись и другие возможности устройств;

- процедура добавления устройства (PnP);

- процедура обслуживания прерываний (ISR);

- DPC-процедура для отложенной обработки прерываний;

- служебные процедуры (инициализирующая, инициации ввода-вывода, завершения ввода-вывода, отмены ввода-вывода, выгрузки, уведомления о завершении работы системы, регистрации ошибок).

Синхронный ввод/вывод –поток, вызвавший операцию, ожидает, когда устройство выполнит ее и вернет код статуса.

Асинхронный ввод/вывод – поток, вызвавший операцию, продолжает выполнение, не ожидая завершения операции.

Операции, представляемые в виде IRP, системой ВСЕГДА выполняются асинхронно. IRP состоит из заголовка и набора блоков стека IRP (IRP stack location): 1 блок (small-IRP) или 8 блоков (large-IRP).

Обработка зависит от числа уровней. При переходе к новому уровню используется новый блок стека каждого IRP.

Используется либо один IRP, либо сопоставленные IRP (associated IRP).

После вызова и передачи данных устройству (шаг 1) система возвращает код незавершенной операции ввода-вывода(шаг 2). Возврат данных (шаг 3) осуществляется только при возникновении аппаратного прерывания.

Д райверы GDI (Graphic Device Interface) представляют собой высокоуровневые драйверы графических устройств (мониторов, принтеров). Эти драйверы выполняют трансляцию графических вызовов Windows в команды, выполняющие соответствующие действия на конкретном устройстве. Выдача этих команд на устройство выполняется уже другим, низкоуровневым драйвером. Благодаря наличию драйверов GDI одна и та же программа может выдавать графическое изображение на разные устройства. Пример: режим предварительного просмотра, который отображает страницы на экране точно в том виде, как они будут напечатаны.

Драйверы клавиатуры и мыши, помимо стандартных для драйвера операций, выполняют дополнительную нагрузку. Они генерируют сообщения о событиях на соответствующем устройстве (нажатие и отпускание клавиши, перемещение мыши, нажатие и отпускание кнопок мыши) и помещают их в системную очередь сообщений. Затем система переправляет каждое сообщение процессу, которому оно было предназначено, для дальнейшей обработки.

Драйверы виртуализации устройств (VxD-драйверы) служат для того, чтобы разделять устройства между процессами, создавая иллюзию, что процесс монопольно владеет устройством. На самом деле драйвер организует очередь заявок от процессов, переключает устройство в нужный для очередного процесса режим и т.п. Пример: драйвер виртуализации монитора.