Архитектура современных операционных систем
153 ся отдельный объект устройство с информацией, специфичной для данного раздела. Но для обращения ко всем разделам используется один и тот же драй- вер жесткого диска. При выгрузке драйвера из системы диспетчер ввода-вывода с помощью очереди объектов устройство определяет устройства, на которые повлияет удаление драйвера. Пакет запроса ввода/вывода IRP Пакет запроса ввода-вывода (I/O request packet, IRP) хранит информацию, нужную для обработки запроса на ввод-вывод. Когда поток вызывает сервис ввода-вывода, диспетчер ввода-вывода создает IRP для представления опера- ции в процессе ее выполнения подсистемой ввода-вывода. IRP состоит из двух частей: фиксированного заголовка (часто называемого телом IRP) и одного или нескольких блоков стека. Фиксированная часть содер- жит такую информацию, как тип и размер запроса, указатель на буфер в случае буферизованного ввода-вывода, данные о состоянии, изменяющиеся по мере обработки запроса, а также сведения о том, является запрос синхронным или асинхронным. Блок стека IRP (IRP stack location) содержит номер функции вво- да-вывода, параметры, специфичные для функции, и указатель на файловый объект вызывающего потока. Номер функции идентифицирует принадлежащую драйверу процедуру распределения, которую диспетчер ввода-вывода вызывает при передаче IRP драйверу IRP хранятся в пространстве процесса и для каждого потока процесса су- ществует своя очередь связанных с этими потоком IRP. Это сделано для того, чтобы в случае аварийного завершения процесса можно было отменить или за- вершить операции ввода/вывода, связанные с этим процессом. Особенности разработки драйверов Две основные особенности WindowsNT необходимо учитывать при созда- нии драйверов: возможность мультипроцессорной обработки; необходимость восстановления после отказа питания.
Made with FlippingBook
RkJQdWJsaXNoZXIy MTY0OTYy