Поддержка широкого спектра драйверов и простота включения нового драйвера в систему

Достоинством подсистемы ввода-вывода любой универсальной ОС является на­личие разнообразного набора драйверов для наиболее популярных периферийных устройств. Прекрасно спланированная и реализованная операционная сис­тема может потерпеть неудачу на рынке только из-за того, что в ее состав не включен достаточный набор драйверов и администраторы и пользователи выну­ждены искать нужный им драйвер для имеющегося у них внешнего устройства у производителей оборудования или, что еще хуже, заниматься его разработкой. Именно в такой ситуации оказались пользователи первых версий OS/2, и, воз­можно, это обстоятельство послужило в свое время не последней причиной сда­чи позиций этой неплохой операционной системы, богатой на драйверы ОС Win­dows 3.x.

Чтобы операционная система не испытывала недостатка в драйверах, необходи­мо наличие четкого, удобного и открытого интерфейса между драйверами и дру­гими компонентами ОС. Такой интерфейс нужен для того, чтобы драйверы пи­сали не только непосредственные разработчики данной операционной системы, но и большая армия программистов по всему миру, в первую очередь — тех пред­приятий, которые выпускают внешние устройства для компьютеров. Открытость интерфейса драйверов, тo есть доступность его описания для независимых раз­работчиков программного обеспечения (а возможно, также и разработка его на основе согласительных процедур между ведущими коллективами разработчиков), является необходимым условием успешного развития операционной системы.

Драйвер взаимодействует, с одной стороны, с модулями ядра ОС (модулями подсистемы ввода-вывода, модулями системных вызовов, модулями подсистем управления процессами и памятью и т. д.), а с другой стороны — с контроллера­ми внешних устройств. Поэтому существуют два типа интерфейсов: интерфейс «драйвер-ядро» ( Driver Kernel Interface, DKI) и интерфейс «драйвер-устройство» ( Driver Device Interface, DDI).

Интерфейс «драйвер-ядро» должен быть стандар­тизован в любом случае, а интерфейс «драйвер-устройство» имеет смысл стан­дартизировать тогда, когда подсистема ввода-вывода не разрешает драйверу не­посредственно взаимодействовать с аппаратурой контроллера, а выполняет эти операции самостоятельно. Экранирование драйвера от аппаратуры является, весьма полезной функцией, так как драйвер в этом случае становится независимым от аппаратной платформы.

Обычно подсистема ввода-вывода поддерживает большое количество системных функций, которые драйвер может вызывать для выполнения некоторых типовых действий. Примерами могут служить упомянутые операции обмена с регистрами контроллера, ведение буферов для промежуточного хранения данных ввода-вы­вода, синхронизация работы нескольких драйверов, копирование данных из поль­зовательского пространства в пространство системы и т. д. Для поддержки процесса разработки драйверов операционной системы обычно выпускается так называемый пакет DDK (Driver Development Kit), представляющий собой набор соответствующих инструментальных средств — библиотек, компиляторов и отладчиков.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: