Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В вычислении , A Драйвер устройства представляет собой компьютерную программу , которая работает или контролирует определенный тип устройства , который присоединен к компьютеру или автомата . [1] Драйвер обеспечивает программный интерфейс для аппаратных устройств, позволяя операционным системам и другим компьютерным программам получать доступ к функциям оборудования без необходимости знать точные сведения об используемом оборудовании.

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

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

Цель [ править ]

Основная цель драйверов устройств - обеспечить абстракцию, действуя как переводчик между аппаратным устройством и приложениями или операционными системами, которые его используют. [1] Программисты могут писать код приложения более высокого уровня независимо от того, какое конкретное оборудование использует конечный пользователь. Например, приложение высокого уровня для взаимодействия с последовательным портом может просто иметь две функции для «отправки данных» и «приема данных». На более низком уровне драйвер устройства, реализующий эти функции, будет взаимодействовать с конкретным контроллером последовательного порта, установленным на компьютере пользователя. Команды, необходимые для управления 16550 UART , сильно отличаются от команд, необходимых для управления FTDI.преобразователь последовательного порта, но каждый аппаратный драйвер устройства абстрагирует эти детали в один и тот же (или аналогичный) программный интерфейс.

Развитие [ править ]

Написание драйвера устройства требует глубокого понимания того, как аппаратное и программное обеспечение работает для данной функции платформы . Поскольку для работы драйверам требуется низкоуровневый доступ к аппаратным функциям, драйверы обычно работают в среде с высокими привилегиями и могут вызвать проблемы в работе системы, если что-то пойдет не так. Напротив, большинство программ пользовательского уровня в современных операционных системах может быть остановлено без значительного воздействия на остальную часть системы. Даже драйверы, выполняющиеся в пользовательском режиме, могут привести к сбою системы, если устройство ошибочно запрограммировано . Эти факторы делают диагностику проблем более сложной и опасной. [3]

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

Microsoft попыталась снизить нестабильность системы из-за плохо написанных драйверов устройств, создав новую платформу для разработки драйверов под названием Windows Driver Foundation (WDF). Это включает в себя структуру драйверов пользовательского режима (UMDF), которая поощряет разработку определенных типов драйверов - в первую очередь тех, которые реализуют протокол на основе сообщений для связи со своими устройствами - в качестве драйверов пользовательского режима. Если такие драйверы не работают, они не вызывают нестабильности системы. Платформа драйвера режима ядра (KMDF) модель по-прежнему позволяет разрабатывать драйверы устройств в режиме ядра, но пытается предоставить стандартные реализации функций, которые, как известно, вызывают проблемы, включая отмену операций ввода-вывода, управление питанием и поддержку устройств Plug and Play.

У Apple есть платформа с открытым исходным кодом для разработки драйверов для macOS , которая называется I / O Kit.

В среде Linux программисты могут создавать драйверы устройств как части ядра , отдельно как загружаемые модули или как драйверы пользовательского режима (для определенных типов устройств, где существуют интерфейсы ядра, например, для устройств USB). Makedev включает список устройств в Linux, включая ttyS (терминал), lp ( параллельный порт ), hd (диск), цикл и звук (в их число входят микшер , секвенсор , dsp и аудио). [4]

Файлы Microsoft Windows .sys и файлы Linux .ko могут содержать загружаемые драйверы устройств. Преимущество загружаемых драйверов устройств заключается в том, что их можно загружать только при необходимости, а затем выгружать, тем самым экономя память ядра.

Режим ядра и режим пользователя [ править ]

Драйверы устройств, особенно на современных платформах Microsoft Windows , могут работать в режиме ядра ( Ring 0 на процессорах x86 ) или в пользовательском режиме (Ring 3 на процессорах x86). [5] Основным преимуществом запуска драйвера в пользовательском режиме является повышенная стабильность, поскольку плохо написанный драйвер устройства пользовательского режима не может вызвать сбой системы из-за перезаписи памяти ядра. [6] С другой стороны, переходы из пользовательского режима в режим ядра обычно приводят к значительным накладным расходам производительности, что делает драйверы режима ядра предпочтительными для работы в сети с малой задержкой.

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

Приложения [ править ]

Из-за разнообразия современного оборудования и операционных систем драйверы работают в самых разных средах. [7] Драйверы могут взаимодействовать с:

  • Принтеры
  • Видеоадаптеры
  • Сетевые карты
  • Звуковые карты
  • Локальные автобусы разного типа - в частности, для мастеринга автобусов на современных системах.
  • Шины ввода-вывода с низкой пропускной способностью различных типов (для указывающих устройств, таких как мыши , клавиатуры и т. Д.)
  • Компьютерные запоминающие устройства, такие как шины жесткого диска , CD-ROM и гибких дисков ( ATA , SATA , SCSI , SAS )
  • Реализация поддержки различных файловых систем.
  • Сканеры изображений
  • Цифровые фотоаппараты

Общие уровни абстракции для драйверов устройств включают:

  • Для оборудования:
    • Прямое взаимодействие
    • Запись в регистр управления устройством или чтение из него
    • Использование интерфейса более высокого уровня (например, Video BIOS )
    • Использование другого драйвера устройства более низкого уровня (например, драйверов файловой системы, использующих драйверы диска)
    • Моделируя работу с оборудованием, при этом делая что-то совсем другое [8]
  • Для программного обеспечения:
    • Предоставление операционной системе прямого доступа к аппаратным ресурсам
    • Реализация только примитивов
    • Реализация интерфейса для программного обеспечения без драйверов (например, TWAIN )
    • Реализация языка, иногда довольно высокого уровня (например, PostScript )

Поэтому выбор и установка правильных драйверов устройств для данного оборудования часто является ключевым компонентом конфигурации компьютерной системы. [9]

Драйверы виртуальных устройств [ править ]

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

Виртуальные устройства также могут работать в невиртуализированной среде. Например, виртуальный сетевой адаптер используется с виртуальной частной сетью , а виртуальное дисковое устройство используется с iSCSI . Хорошим примером драйверов виртуальных устройств может служить Daemon Tools .

Существует несколько вариантов драйверов виртуальных устройств, таких как VxD , VLM и VDD.

Драйверы с открытым исходным кодом [ править ]

  • Драйвер графического устройства
  • Принтеры: CUPS
  • RAID: CCISS [10] (командный интерфейс Compaq для поддержки SCSI-3 [11] )
  • Сканеры: SANE
  • Видео: Vidix , инфраструктура прямого рендеринга

Описание наиболее часто используемых драйверов устройств в Solaris :

  • fas: Быстрый / широкий контроллер SCSI
  • hme: Fast (10/100 Мбит / с) Ethernet
  • isp: Дифференциальные контроллеры SCSI и карта SunSwift
  • glm: (Gigabaud Link Module [12] ) Контроллеры UltraSCSI
  • scsi: устройства с последовательным интерфейсом малых компьютеров (SCSI)
  • sf: soc + или social Fibre Channel Arbitrated Loop (FCAL)
  • soc: контроллеры SPARC Storage Array (SSA) и управляющее устройство
  • social: Последовательные оптические контроллеры для FCAL (soc +)

API [ править ]

  • Модель драйвера дисплея Windows (WDDM) - архитектура драйвера графического дисплея для Windows Vista , Windows 7 , Windows 8 и Windows 10 .
  • Унифицированная аудио модель (UAM) [13]
  • Фонд драйверов Windows (WDF)
  • Декларативное компонентное оборудование (DCH) - драйвер универсальной платформы Windows [14]
  • Модель драйвера Windows (WDM)
  • Спецификация интерфейса сетевого драйвера (NDIS) - стандартный API драйвера сетевой карты
  • Расширенная звуковая архитектура Linux (ALSA) - с 2009 года стандартный интерфейс звукового драйвера Linux
  • Scanner Access Now Easy (SANE) - общедоступный интерфейс к оборудованию сканера растровых изображений
  • Устанавливаемая файловая система (IFS) - API файловой системы для IBM OS / 2 и Microsoft Windows NT
  • Open Data-Link Interface (ODI) - API сетевой карты, похожий на NDIS
  • Uniform Driver Interface (UDI) - кроссплатформенный проект интерфейса драйвера.
  • Dynax Driver Framework (dxd) - кроссплатформенная среда драйверов C ++ с открытым исходным кодом для KMDF и IOKit [15]

Идентификаторы [ править ]

Устройство на шине PCI или USB идентифицируется двумя идентификаторами, каждый из которых состоит из 4 шестнадцатеричных чисел. Идентификатор поставщика идентифицирует поставщика устройства. Идентификатор устройства идентифицирует конкретное устройство от этого производителя / поставщика.

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

См. Также [ править ]

  • Драйвер (программное обеспечение)
  • Водитель класса
  • Контроллер (вычисления)
  • Синтез и проверка драйверов устройств
  • Обертка драйвера
  • Бесплатно программное обеспечение
  • Прошивка
  • Прерывать
  • Загружаемый модуль ядра
  • Makedev
  • Оборудование с открытым исходным кодом
  • Драйвер принтера
  • Репликант (операционная система)
  • udev

Ссылки [ править ]

  1. ^ a b "Что такое драйвер всего устройства?" . WhatIs.com . TechTarget . Проверено 19 марта 2018 .
  2. ^ EMC Education Services (2010). Хранение и управление информацией: хранение, управление и защита цифровой информации . Джон Вили и сыновья. ISBN 9780470618332.
  3. ^ Берк, Тимоти (1995). Написание драйверов устройств: учебник и справочник . Цифровая пресса. ISBN 9781555581411.
  4. ^ «МАКЕДЕВ - Команда Linux - Команда Unix» . Linux.about.com. 2009-09-11 . Проверено 17 сентября 2009 .
  5. ^ «Пользовательский режим против драйверов режима ядра» . Microsoft . 2003-03-01. Архивировано из оригинала на 2008-03-09 . Проверено 4 марта 2008 .
  6. ^ «Введение в структуру драйвера пользовательского режима (UMDF)» . Microsoft . 2006-10-10 . Проверено 4 марта 2008 .
  7. ^ Дебора Морли (2009). Понимание компьютеров 2009: сегодня и завтра . Cengage Learning. ISBN 9780324830132.
  8. ^ Компьютерная периферия и интерфейсы . Технические публикации Пуна. Январь 2008. С. 5–8. ISBN 978-8184314748. Проверено 3 мая 2016 .
  9. ^ "Что такое драйверы устройств и зачем они нам нужны?" . drivers.com . 17 апреля 2015 года . Проверено 19 марта 2018 года .
  10. ^ "CCISS" . SourceForge . 2010 . Проверено 11 августа 2010 . Драйверы для контроллеров HP (ранее Compaq) Smart Array, которые обеспечивают возможность аппаратного RAID.
  11. ^ Рассел, Стив; и другие. (2003-10-21). Аббревиатуры и акронимы . Консолидация серверов с помощью IBM eserver xSeries 440 и VMware ESX Serve . Международная организация технической поддержки IBM. п. 207. ISBN. 0-7384-2684-9. Проверено 14 августа 2011 .[ постоянная мертвая ссылка ]
  12. ^ "Патент США 5969841 - модуль связи гигабода с полученным сигналом обнаружения мощности" . ООО "ПатентСторм". Архивировано из оригинала 2011-06-12 . Проверено 8 сентября 2009 . Усовершенствованный модуль связи Gigabaud (GLM) предназначен для выполнения двунаправленной передачи данных между хост-устройством и носителем последовательной передачи.
  13. ^ «Унифицированная аудио модель (Windows CE 5.0)» . msdn.microsoft.com . Проверено 19 сентября 2016 .
  14. ^ Dell США. «Что такое драйверы DCH и почему о них нужно знать? | Dell США» . www.dell.com . Проверено 29 октября 2020 .
  15. ^ "dxd - структура драйвера dynax: главная страница" . dxd.dynax.at . Проверено 19 сентября 2016 .

Внешние ссылки [ править ]

  • Центр разработки оборудования для Windows
  • Списки совместимого оборудования Linux и драйверы Linux
  • Общие сведения о драйверах современных устройств (Linux)
  • BinaryDriverHowto, Ubuntu.
  • Источник драйверов для Linux