title-icon
Яндекс.Метрика

Драйвер


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

В общем случае драйвер не обязан взаимодействовать с аппаратными устройствами, он может их только имитировать (например, драйвер принтера, который записывает вывод из программ в файл), предоставлять программные сервисы, не связанные с управлением устройствами (например, /dev/zero в Unix, который только выдаёт нулевые байты), либо не делать ничего (например, /dev/null в Unix и NUL в DOS/Windows).

Подход к построению драйверов

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

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

  • Загрузка драйвера. Тут драйвер регистрируется в системе, производит первичную инициализацию и т. п.
  • Выгрузка. Драйвер освобождает захваченные ресурсы — память, файлы, устройства и т. п.
  • Открытие драйвера. Начало основной работы. Обычно драйвер открывается программой как файл, функциями fopen() в UNIX-подобных системах или CreateFile() в Win32.
  • Чтение/Запись: программа читает или записывает данные из/в устройство, обслуживаемое драйвером.
  • Закрытие: операция, обратная открытию, освобождает занятые при открытии ресурсы и уничтожает дескриптор файла.
  • Управление вводом-выводом (англ. IO Control, IOCTL). Зачастую драйвер поддерживает интерфейс ввода-вывода, специфичный для данного устройства. С помощью этого интерфейса программа может послать специальную команду, которую поддерживает данное устройство. Например, для SCSI-устройств можно послать команду GET_INQUIRY, чтобы получить описание устройства. В Win32-системах управление осуществляется через API-функцию DeviceIoControl(), в UNIX-подобных — с помощью ioctl().

Разработка драйвера для использования не по прямому назначению

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

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

Драйверы видеокарт

  • Драйверы видеокарт с открытым исходным кодом

Интеграция драйверов

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

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

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

Виртуальные драйверы

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