Драйвер
Материал из Википедии — свободной энциклопедии
Дра́йвер (англ. driver) (множественное число дра́йверы, вариант драйвера́ разговорный и профессиональный)— это компьютерная программа, с помощью которой другая программа (обычно операционная система) получает доступ к аппаратному обеспечению стандартным образом. В общем случае для использования каждого устройства, подключённого к компьютеру, необходим специальный драйвер. Обычно с операционными системами поставляются драйверы для ключевых компонентов аппаратного обеспечения, без которых система не сможет работать. Однако для более специфических устройств (таких, как графическая плата или принтер) могут потребоваться специальные драйверы, обычно предоставляемые производителем устройства.
[править] Идеология построения драйверов
Операционная система управляет некоторым «виртуальным устройством», которое понимает стандартный набор команд. Драйвер переводит эти команды в команды, которые понимает непосредственно устройство. Эта идеология называется «абстрагирование от аппаратного обеспечения». Впервые в отечественной вычислительной технике подобный подход появился в серии ЕС ЭВМ, а такого рода управляющие программы назывались канальными программами.
Драйвер состоит из нескольких функций, которые обрабатывают определенные события операционной системы. Обычно это 7 основных событий:
- загрузка драйвера. Тут драйвер регистрируется в системе, производит первичную инициализацию и т. п.;
- выгрузка. Драйвер освобождает захваченные ресурсы — память, файлы, устройства и т. п.;
- открытие драйвера. Начало основной работы. Обычно драйвер открывается программой как файл, функциями CreateFile() в Win32 или fopen() в UNIX-образных системах;
- чтение;
- запись: программа читает или записывает данные из/в устройство, обслуживаемое драйвером;
- закрытие;
- IOCTL. Зачастую драйвер поддерживает интерфейс ввода-вывода, специфичный для данного устройства. С помощью этого интерфейса программа может послать специальную команду, которую поддерживает данное устройство. Например, для SCSI устройств можно послать команду GET_INQUERY, чтобы получить описание устройства. В Win32 системах управление осуществляется через API-фунцию DeviceIoControl(). В UNIX-подобных — ioctl()
[править] См. также
- DDK — Driver Development Kit
- klife - Introduction to Linux Device Drivers (pdf)
[править] Ссылки
- Коллекция драйверов, разбитая по категориям и производителям
- Библиотека драйверов для всех устройств компьютера