Архитектура современных операционных систем
150 5. одна или несколько процедур завершения ввода-вывода - уведомля- ют драйвер об окончании обработки IRP драйвером более низкого уровня. Например, диспетчер ввода-вывода вызывает процедуру за- вершения ввода-вывода драйвера файловой системы, когда драйвер устройства заканчивает передачу данных в файл или из него. Эта процедура уведомляет драйвер файловой системы об удачном или неудачном завершении операции, или о ее отмене, а также позволяет драйверу файловой системы освободить ресурсы. Процедура в про- тивоположность ISR используется в высокоуровневых драйверах. 6. процедура DPC - выполняет основную часть обработки прерывания, оставшуюся после выполнения ISR. Она работает при более низком IRQL (уровня «DPC»), чем ISR, чтобы не блокировать без необходи- мости другие прерывания. DPC-процедура инициирует завершение текущей операции ввода-вывода и выполнение следующей операции ввода-вывода из очереди на данном устройстве. 7. процедура отмены ввода-вывода. Если операция ввода-вывода может быть отменена, драйвер определяет одну или более процедур отмены ввода-вывода. Получив IRP для запроса ввода-вывода, который мо- жет быть отменен, драйвер связывает с IRP процедуру отмены. Если поток, выдавший запрос на ввод-вывод, завершается до окончания обработки запроса или отменяет операцию, диспетчер ввода-вывода выполняет процедуру отмены, связанную с IRP (если таковая есть). Процедура отмены отвечает за выполнение любых действий, необхо- димых для освобождения всех ресурсов, выделенных при обработке IRP, а также за завершение IRP со статусом отмены. 8. процедура выгрузки - освобождает все системные ресурсы, задей- ствованные драйвером, после чего диспетчер ввода-вывода может удалить их из памяти. При выполнении процедуры выгрузки обычно освобождаются ресурсы, выделенные процедурой инициализации. Драйвер может загружаться и выгружаться во время работы системы.
Made with FlippingBook
RkJQdWJsaXNoZXIy MTY0OTYy