logo
Информатика_ЗФ / 2013_Информатика УМО_легпром

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

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

Чтобы получить доступ к аппаратной части устройства, т.е. к регистрам контроллера, драйвер устройства должен быть частью ядра операционной системы. Хотя возможно создать и драйвер, работающий в пространстве пользователя, современные операционные системы предполагают работу драйверов в ядре (рис. 5.3).

Рис. 5.11. Программно-аппаратное взаимодействие

при управлении устройствами ввода-вывода

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

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

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

Драйвер устройства выполняет следующие функции:

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