Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Материалы по конспектам 2011.docx
Скачиваний:
13
Добавлен:
21.04.2019
Размер:
967.53 Кб
Скачать

61. Реализация свв в Windows nt

СВВ – часть кода ОС, получающая запросы ВВ от процессов режима пользователя и режима ядра и передающая их в преобразованном виде в устройства ВВ.

Система управляется пакетами. Каждый запрос представляет IRP-пакет (Input Request Package).

IRP позволяет использовать иерархические настройки системы В/В и драйверов.

IRP – структура данных, управляющая обработкой выполнения операций на каждой стадии их выполнения.

Диспетчер В/В (IO Manager) – входит в состав системы В/В, управляет передачей запросов В/В в файловую систему, реализует процедуру общего назначения для разных драйверов.

Функции и этапы работы диспетчера:

  • Создание IRP определенного формата

  • Передача пакета соответствующему драйверу

  • Удаление IRP

Функции драйвера:

  • Получение IRP

  • Выполнение операции

  • Возвращение управления В/В, либо реализация завершения

В NT существуют драйверы файловой системы и драйверы устройств В/В. При любой операции В/В задействованы и драйверы ФС и драйверы устройств. Работают через IRP, контролируются диспетчером. Реализуется общая процедура для различных драйверов. Упрощаются отдельные драйвера и вносится универсальность.

Пример: 1) Функция вызова драйвером других устройств, управление буферизацией, поддержка таймаутов для драйверов, предоставление информации о об установленных ФС. Гибкие средства API представляют набор средств для пользовательского режима.

Принцип: виртуальные файлы устройств (как в UNIX) – объектная модель. Работа осуществляется посредством файловых описателей. Описатель ссылается на объект – файл.

Потоки пользовательского режима вызывают базовые сервисы файла объекта (чтение, запись, открытие). Диспетчер динамически преобразует эти запросы в запросы к реальным физическим устройствам (накопителям, сетям и т.д.)

Пример: 2) Функция открытия файла

После запроса ВВ поток обязан ждать у описателя объекта до передачи данных – синхронизация. Драйвер устройства и драйвер ФС одинаковы.

Пример: 3) Возврат описателя файл-объекта

Файл-объект выполняет функцию средства синхронизации. Для ОС абсолютно одинаково выглядят драйверы устройств и драйверы ФС.

Есть средства: именованные каналы и сетевые редиректоры, реализующиеся как драйверы.

Всякий драйвер – независимый элемент ОС, который может быть динамически загружен или удален без изменения конфигурации ОС.

62. Унифицированная модель драйвера

Требования, которые предъявляются для разработчиков драйверов под NT:

  • Драйверы пишутся на языках высокого уровня для обеспечения переносимости.

  • Операция В/В управляется IRP-пакетами. IRP используются многократно по слоям. Система динамически назначает драйверы для управления дополнительными новыми.

  • Драйверы должны синхронизировать доступ к глобальным данным

  • Должны позволять вытеснять потоками более высокого приоритета

  • Должны быть прерываемы другими потоками

  • Код драйвера должен быть способен выполняться на нескольких процессорах.

  • Драйверы должны восстанавливаться после сбоя и выполнять нереализованные операции (в NT 4.0 не реализовано)

Драйверы имеют унифицированную модель интерфейса => диспетчер В/В не видит их структуру и детали реализации. При взаимодействии различных драйверов диспетчер играет роль посредника.

Драйверы могут быть:

  • Однослойные (для последовательного порта и др.)

  • Многослойные (для ЗУ большой емкости)

Пример многослойного драйвера – при работе через SCSI-интерфейс драйвер дисков передает запрос на драйвер SCSI, который реализует обработку. Запрос к дискам реализует драйвер SCSI.

Передача может быть:

  • Асинхронной – более быстродействующий вариант и экономичный в плане ресурсов (всегда СВВ)

  • Синхронный – проще в плане реализации

Win32 автоматически выбирает синхронный/асинхронный вариант взаимодействия.

Поскольку асинхронный способ позволяет существенно увеличить производительность пользовательских приложений, то по умолчанию для 1/3 сервисов установлен асинхронный режим. Тем не менее поток может сам решать каким способом передавать данные.

Синхронная процедура:

Приложение WriteFile

(описатель файла, параметры)

Read(…) (приложение)

Подсистема Win32

Вызов NT сервиса

Запись в файл

Вернуть данные

Диспетчер В/В

  1. проверка параметров

  2. Создание IRP

  3. Вызов драйвера устройства

Завершение IRP

возврат

Драйвер устройства

Направить запрос на устройство

обработка прерывания

Устройство

Выполнить передачу данных

прерывание

здесь ожидаем

Асинхронная процедура:

Приложение WriteFile

(описатель файла, параметры)

передача упр-я

<ожидание>

Подсистема Win32

Вызов NT сервиса

Запись в файл

wait (описатель файла); вернуть код завершения и В/В выполняется

возврат данных

Диспетчер В/В

  1. проверка параметров

  2. Создание IRP

  3. Вызов драйвера устройства

возврат

1) завершить IRP

2) установить описатель объекта-файла в сигнализир. состояние

Драйвер устройства

Направить запрос на устройство

возврат

обработка прерывания

Устройство

1) выполнить передачу данных

2) перывание

В асинхронной перевод файла в сигнальное состояние необходим для защиты данных (т.к. произошла смена контекста для другой работы).

Атрибут файла «совмещённый» (overlapped) – асинхронный режим (специальная реализация обмена).