Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пособие_Unix.doc
Скачиваний:
4
Добавлен:
26.11.2019
Размер:
2.41 Mб
Скачать

5.4 Драйвера

Драйвер взаимодействует, с одной стороны, с модулями ядра ОС, а с другой стороны — с контроллерами внешних устройств.

Поэтому существуют два типа интерфейсов: интерфейс «драйвер-ядро» - (Driver Kernel Interface, DKI) и интерфейс «драйвер-устройство» {Driver Device Interface, DDF).

Соответственно, драйверы состоят из двух уровней: низкоуровневого и высокоуровневого драйверов.

Низкоуровневый:

  • входит в состав ядра операционной системы, работая в привилегированном режиме;

  • непосредственно управляет внешним устройством, взаимодействуя с его контроллером с помощью команд ввода-вывода компьютера;

  • обрабатывает прерывания от контроллера устройства;

  • предоставляет прикладному программисту удобный логический интерфейс работы с устройством, экранируя от него низкоуровневые детали управления устройством и организации его данных;

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

Высокоуровневый:

  • располагаются в общей модели над традиционными драйверами.

  • как правило, не вызываются по прерываниям, а взаимодействуют с устройством через аппаратные драйвера.

Менеджер ввода-вывода управляет драйверами однотипно, независимо от того, к какому уровню он относится

Так же как и устройства, драйвера делятся на

  • Блок-ориентированные

  • Байт-ориентированные

Блок-ориентированные драйверы управляют устройствами прямого доступа, которые хранят информацию в блоках фиксированного размера, каждый из которых имеет собственный адрес. Самое распространенное внешнее устройство прямого доступа — диск. Адресуемость блоков приводит к тому, что для устройств прямого доступа появляется возможность кэширования данных в оперативной памяти.

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

Значительность отличий блок-ориентированных и байт-ориентированных драйверов иллюстрирует тот факт, что среда STREAMS разработана только для байт-ориентированных драйверов и включить в нее блок-ориентированный драйвер невозможно.

Для байт-ориентированного устройства невозможно разработать блок-ориентированный драйвер. Однако блок-ориентированным устройством можно управлять и с помощью байт-ориентированного драйвера. Так, диск можно рассматривать не только как набор блоков, но и как набор байт,

Тем не менее, имеются внешние устройства, драйверы которых не относятся ни к одному классу, например таймер, который, с одной стороны, не содержит адресуемой информации, а с другой стороны, не порождает потока байт. Это устройство только выдает сигнал прерывания в некоторые моменты времени.

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

Есть два варианта: динамическое и статическое подключение.

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

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

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

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