Открыть сервисСервис

Драйвер — программный модуль

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

Назначение и принцип работы

Основная задача драйвера — абстрагировать приложения от различий в аппаратном обеспечении. Программа, обращающаяся к принтеру, не должна знать, является ли тот лазерным или струйным, подключён ли по USB или по сети: за неё это делает драйвер, преобразующий универсальные команды в специфичные для устройства протоколы.

Драйверы работают в двух основных режимах:

  • В режиме ядра — имеют полный доступ к аппаратным ресурсам и памяти, выполняются с высокими привилегиями. Ошибка в драйвере ядра может привести к сбою всей системы (синий экран смерти в Windows, паника ядра в Linux).
  • В режиме пользователя — работают в изолированном пространстве, что повышает устойчивость системы, но ограничивает доступ к оборудованию. Такой подход применяется, например, в драйверах CUPS для печати в Linux и macOS.

Классификация

Драйверы классифицируют по нескольким признакам.

По типу управляемого устройства:

ТипПримеры
Дисковые устройстваHDD, SSD, оптические приводы
Сетевые устройствасетевые карты, Wi-Fi модули
Видеоустройствавидеокарты, мониторы
Периферийные устройстваклавиатуры, мыши, принтеры
Звуковые устройствазвуковые карты, микрофоны
Датчики и контроллерытермометры, акселерометры

По способу подключения к системе:

  • Монолитные — встроены в ядро операционной системы (типично для Linux, где драйверы часто компилируются как модули ядра).
  • Загружаемые модули — подключаются к работающей системе без перезагрузки.
  • Пользовательские — работают в пространстве пользователя и общаются с ядром через специальные интерфейсы.

Драйверы в разных операционных системах

Windows

В Windows драйверы реализуются в виде исполняемых файлов с расширением .sys и подписываются цифровой подписью Microsoft. Система использует модель WDM (Windows Driver Model) и более новую модель KMDF/WDM-совместимую Windows Driver Framework (WDF). Драйверы видеокарт в Windows поставляются производителями оборудования (NVIDIA, AMD, Intel) и устанавливаются через Windows Update или специализированные утилиты.

Linux

В Linux драйверы являются модулями ядра (.ko-файлы) и часто входят в основное дерево ядра. Распространённый пакет linux-headers содержит заголовочные файлы для компиляции модулей. Драйверы для большинства устройств уже включены в ядро, поэтому новые устройства нередко работают «из коробки». Для управления драйверами используются утилиты modprobe, lsmod, insmod.

macOS

В macOS драйверы реализуются в виде бандлов (.kext — kernel extension). С 2020 года Apple постепенно переводит драйверы на DriverKit — фреймворк, работающий в пространстве пользователя, что повышает безопасность системы.

Установка и обновление

Операционные системы автоматически определяют оборудование и подбирают подходящий драйвер. В Windows для этого используется механизм Plug and Play (PnP), в Linux — udev. Обновления драйверов выпускаются для исправления ошибок, повышения производительности и обеспечения совместимости с новым оборудованием. В корпоративной среде драйверы часто распространяются через системы централизованного управления (например, WSUS или SCCM).

Особенности разработки

Разработка драйверов — сложная задача, требующая знания архитектуры операционной системы и аппаратных интерфейсов. Ошибки в драйверах являются частой причиной нестабильности компьютеров. В связи с этим операционные системы предпринимают меры по изоляции драйверов: механизм Driver Verifier в Windows, механизм изоляции драйверов в macOS и ограничения на запись в память ядра в современных Linux-системах.

Интересные факты

  • В 1990-х годах драйверы часто распространялись на дискетах, входивших в комплект с оборудованием.
  • В Linux драйверы для большинства устройств написаны сообществом и распространяются под свободными лицензиями (GPL).
  • Некоторые устройства (например, принтеры HP) поддерживаются двумя независимыми драйверами: проприетарным от производителя и свободным (HPLIP).

Источники:

  • «Операционные системы» — учебник под редакцией С. С. Балакирева
  • Документация Microsoft по Windows Driver Framework (WDDM)
  • Документация ядра Linux (kernel.org)
  • «Драйверы устройств в Linux» — материалы Linux Documentation Project
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru