Общие принципы построения драйверов




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

Назначение. Практическое использование драйверов

Компьютер представляет собой сложную вычислительную систему, состоящую из множества взаимосвязанных компонент, как внутренних, так и внешних п отношению к вычислительному блоку. Для их правильной согласованной работы необходимы специальные программы. Такие программы называют драйверами или драйверами устройств. По сути это программы управления устройствами.

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

Для внешних устройств драйверы обычно разрабатываются под конкретные:

1) устройство,

2) операционную систему.

В общем случае драйвер может не взаимодействовать с конкретными аппаратными устройствами, он может их только имитировать. Например, драйвер принтера, который записывает вывод из программ в файл.

Модельные драйверы могут предоставлять программные сервисы, не связанные с управлением устройствами либо вообще не производить никаких действий.

Все необходимые драйверы для современных ОС обычно включают в состав дистрибутива операционной системы (установочный CD/DVD диск). В процессе установки ОС сама определяет, какое оборудование в вычислительной системе установлено, и сама установит необходимые драйверы.

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

Довольно часто возникают ситуации, когда пользователю самому приходится устанавливать драйверы вручную. Например, при смене видеокарты или при покупке нового печатающего устройства. В этом случае к видеокарте или принтеру обязательно прилагается диск с нужными драйверами. После установки диска в CD/DVD привод автоматически запускается программа, в которой предлагается установка драйвера и сопутствующего ему программного обеспечения. После соответствующего выбора производится установка драйверов.

Также иногда возникает необходимость выяснить, какое оборудование и какие драйверы уже установлены в системе. В ОС Windows для этого необходимо «вызвать» Диспетчер устройств.

Типы драйверов

 

По области применения драйверы устройств в ОС Windowsделят на два основных типа:

- драйверы пользовательского режима (UserModeDrivers) и

- драйверырежимаядра (Kernel Mode Drivers).

Драйверы UserMode, в свою очередь, делятся на:

- драйверы виртуальных устройств (VirtualDeviceDrivers, VDD), использующиеся для поддержки программ MS-DOS, и

-драйверыпринтеров (PrinterDrivers).

ДрайверыKernelModeподразделяютсяна:

- драйверы файловой системы (FileSystemDrivers), которые реализуют ввод/вывод на локальные и сетевые диски,

-унаследованныедрайверы (LegacyDrivers), написанныедляпредыдущихверсийWindowsNT,

-драйверывидеоадаптеров (VideoDrivers), реализующиеграфическиеоперации,

- драйверы потоковых устройств (StreamingDrivers), реализующие ввод/вывод видео и звука,

- WDM-драйверы (WindowsDriverModel, WDM), поддерживающие технологии Plug’n’Play и управления электропитанием.

По структуре драйверы можно разделить на:

- одноуровневые и

- многоуровневые.

Большинство драйверов, управляющих физическими устройствами, является многоуровневыми (layereddrivers). Это означает, что драйвер должен был обеспечивать все необходимые службы, включая пользовательский интерфейс, функции прикладного программного интерфейса (API) и службы аппаратного доступа для устройств под управлением MicrosoftWindows.Обработка запроса ввода/вывода фактически разделяется между несколькими драйверами. Каждый выполняет свою часть работы. Например, запрос на чтение файла передается драйверу файловой системы, который, выполнив некоторые операции (например, разбиение запроса на несколько частей), передает его «ниже» - драйверу диска, а тот, в свою очередь, отправляет запрос драйверу шины. Кроме того, между ними можно добавить любое количество драйверов-фильтров (например, шифрующих данные). Выполнив запрос, нижестоящий драйвер (lower-leveldriver) передает его результаты «наверх», вышестоящему (higher-leveldriver).

Для реализации многоуровневости, начиная с операционной системы Windows 95, была реализована модель универсального драйвера/мини-драйвера. Эта архитектура предоставляет базовые службы для работы с различными классами устройств. При этом независимые разработчики аппаратуры (IHV) должны в комплекте с аппаратными средствами поставить аппаратно-зависимую программу (драйвер).Многоуровневые драйверы также называют к омбинированными.

В связи с усовершенствованием модели драйверовWindows (WDM – WindowsDriverModel), в которой были добавлены поддержка PlugandPlay и энергосберегающие технологии,драйверы стали разделять на:

- унаследованные драйверы (Legacy-драйверы,драйверы «в стиле NT»), они написаны в старой манере,без поддержки нововведений;

- WDM-драйверы – новые драйверы,которые удовлетворяют всем требованиям расширенной модели WDM.

Универсальные драйверы. Универсальный драйвер содержит базовый программный код для поддержки определенного класса устройств (таких как модемы или принтеры), обеспечивающий взаимодействие с соответствующими компонентами операционной системы (такими как подсистема печати или коммуникации). Мини-драйвер - это небольшой и простой драйвер, содержащий любые дополнительные команды, необходимые для работы определенных устройств. Во многих случаях универсальный драйвер для определенной категории устройств, также, содержит программный код, необходимый для работы устройств данной категории. Например, драйвер стандартного модема работает со всеми модемами, поддерживающими команды AT.

Драйверы виртуальных устройств. Драйвер виртуального устройства (VxD) - 32-х разрядный драйвер защищенного режима, управляющий системными ресурсами, такими как аппаратные устройства или программы, при этом более чем одна программа может использовать ресурс одновременно. Термин "VxD" относится к универсальному виртуальному драйверу устройства, где буква "x" представляет тип драйвера устройства. Например, драйвер виртуального устройства адаптера дисплея обозначается как VDD (виртуальный драйвер дисплея), виртуальный драйвер устройства для устройства таймера - VTD, виртуальный драйвер устройства для устройства принтера - VPD, и так далее.
Драйвер VxD динамически взаимодействует с драйвером устройства, а также предоставляет информацию о состоянии устройства программам.

Виртуальные драйверы. Виртуальные драйверы устройств представляют собой особый вариант драйверов. Они используются для эмуляции аппаратного устройства, особенно в средах виртуализации, например, когда программа DOS запускается на компьютере с MicrosoftWindows.

Общие принципы построения драйверов

В общем случае ОС управляет некоторым «виртуальным устройством» за счет того, что последнее понимает некоторый стандартный набор команд, генерируемых системой. Драйвер переводит команды ОС в команды, которые понимает непосредственно управляемое устройство. Такую идеологию называют «абстрагирование от аппаратного обеспечения». Впервые в отечественной вычислительной технике подобный подход появился в серии ЕС ЭВМ, а такого рода управляющие программы (драйверы) назывались канальными программами.

Многоуровневый (комбинированный) драйвер состоит из нескольких специализированных функций, которые обрабатывают определенные события операционной системы. Обычно это 7 основных событий:

1) загрузка драйвера (драйвер регистрируется в системе, производит первичную инициализацию и т. п.),

2) выгрузка (драйвер освобождает захваченные ресурсы — память, файлы, устройства и т. п.),

3) открытие драйвера. Начало основной работы. Обычно драйвер открывается программой как файл, функциями CreateFile() в Win32 или fopen() в UNIX-подобных системах,

4) чтение,

5) запись: программа читает или записывает данные из/в устройство, обслуживаемое драйвером,

6) закрытие (операция, обратная открытию, освобождает занятые при открытии ресурсы и уничтожает дескриптор файла),

7) управление вводом-выводом (англ. IO Control, IOCTL), зачастую драйвер поддерживает интерфейс ввода-вывода, специфичный для данного устройства, с помощью этого интерфейса программа может послать специальную команду, которую поддерживает данное устройство.

Например, для SCSI-устройств можно послать команду GET_INQUIRY, чтобы получить описание устройства. В Win32-системах управление осуществляется через API-функцию DeviceIoControl(). В UNIX-подобных — ioctl().

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

Сначала производители платформ поставляли набор отдельных драйверов для операционных систем, собранный на один носитель (обычно компакт-диск), Затем появились установочные пакеты, называвшиеся 4-in-1 и Onetouch, и позволявшие упростить установку драйверов в систему. При этом, как правило, можно выбрать либо полностью автоматическую установку всех драйверов, либо выбрать вручную нужные. Однако единого, устоявшегося термина долго не было.

Современный термин, описывающий такие наборы драйверов устройств — BoardSupportPackage, или «пакет поддержки платформы». Помимо собственно драйверов, он может, как и прочие установочные пакеты, содержать модули операционной системы и программы.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-10-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: