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

Драйверы в вычислительной технике

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

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

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

Типовая схема взаимодействия выглядит так:

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

Драйверы работают на разных уровнях привилегий. Часть из них встраивается в ядро (kernel-mode drivers) и имеет полный доступ к памяти и оборудованию, часть функционирует в пользовательском режиме. Ошибка в драйвере ядра способна привести к сбою всей системы, поэтому к их разработке и подписи предъявляются повышенные требования.

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

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

По типу устройства:

  • драйверы видеокарт (графические);
  • драйверы звуковых карт;
  • драйверы сетевых адаптеров;
  • драйверы принтеров, сканеров, МФУ;
  • драйверы чипсета и материнской платы;
  • драйверы накопителей и контроллеров хранения данных.

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

  • встроенные (входящие в состав операционной системы);
  • устанавливаемые отдельно производителем оборудования.

По режиму работы:

  • драйверы ядра;
  • драйверы пользовательского режима;
  • виртуальные драйверы, не связанные с физическим устройством напрямую.

История развития

В ранних операционных системах, таких как MS-DOS, драйверы часто подключались вручную через конфигурационные файлы, а их набор был ограничен. С распространением Windows и Linux утвердились стандартизированные модели драйверов: в Windows — WDM, WDF, а позднее модель, основанная на универсальных драйверах UMDF и KMDF; в Linux — модули ядра с открытым исходным кодом.

В Linux значительная часть драйверов входит непосредственно в ядро и распространяется по свободным лицензиям. Это упрощает поддержку, но создаёт сложности для производителей, не желающих раскрывать документацию на оборудование. В результате для ряда устройств драйверы либо отсутствуют, либо создаются сообществом методом обратной разработки.

В Windows исторически практиковалась поставка драйверов на отдельных носителях вместе с устройством. Со временем получили распространение централизованные хранилища и автоматическая загрузка через службы обновления.

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

Современные операционные системы, включая Windows и дистрибутивы Linux, содержат базу типовых драйверов и способны автоматически подбирать их при обнаружении нового оборудования. Тем не менее для полноценной работы видеокарт, звуковых интерфейсов и специализированного оборудования обычно требуется установка фирменного драйвера с сайта производителя.

Основные способы получения драйверов:

  • автоматическая установка средствами операционной системы;
  • загрузка с официального сайта производителя устройства;
  • установка с прилагаемого носителя или диска;
  • использование менеджеров пакетов в Linux;
  • централизованное развёртывание в корпоративных сетях.

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

Проблемы и риски

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

Дополнительные сложности:

  • несовместимость версий драйвера и операционной системы;
  • отсутствие драйверов для устаревшего оборудования;
  • конфликты между драйверами разных устройств;
  • рост размера драйверов и усложнение их сопровождения.

Для снижения рисков применяют цифровую подпись драйверов, обязательную в 64-битных версиях Windows, изоляцию драйверов пользовательского режима и механизмы проверки целостности.

Драйверы в России

В России разработкой драйверов занимаются как производители вычислительной техники и электроники, так и профильные компании, создающие программное обеспечение для банковского, промышленного и телекоммуникационного оборудования. Значительное внимание уделяется драйверам для отечественных операционных систем семейства Linux, применяемых в государственных и корпоративных системах. Развитие собственных драйверов рассматривается как условие технологической независимости, поскольку импортные комплектующие нередко поставляются без документации, необходимой для написания ПО.

Смежные понятия

С драйверами тесно связаны понятия прошивки (firmware), которая выполняется самим устройством, и программного интерфейса (API), через который система обращается к драйверу. Иногда функции драйвера и прошивки частично дублируются, что требует согласованной работы обеих сторон.

Источники: документация Microsoft по моделям драйверов Windows; документация ядра Linux; материалы производителей видеокарт и периферии; техническая литература по операционным системам.

Загружаем BFOmetr…