В вычислении , A Драйвер устройства представляет собой компьютерную программу , которая работает или контролирует определенный тип устройства , который присоединен к компьютеру или автомата . [1] Драйвер предоставляет программный интерфейс для аппаратных устройств, позволяя операционным системам и другим компьютерным программам получать доступ к функциям оборудования без необходимости знать точные сведения об используемом оборудовании.
Драйвер связывается с устройством через компьютерную шину или подсистему связи, к которой подключается оборудование. Когда вызывающая программа вызывает процедуру в драйвере, драйвер выдает команды устройству. Как только устройство отправляет данные обратно драйверу, драйвер может вызывать подпрограммы в исходной вызывающей программе.
Драйверы зависят от оборудования и операционной системы. Обычно они обеспечивают обработку прерываний, необходимую для любого необходимого асинхронного зависящего от времени аппаратного интерфейса. [2]
Цель [ править ]
Основная цель драйверов устройств - обеспечить абстракцию, действуя как переводчик между аппаратным устройством и приложениями или операционными системами, которые его используют. [1] Программисты могут писать код приложения более высокого уровня независимо от того, какое конкретное оборудование использует конечный пользователь. Например, приложение высокого уровня для взаимодействия с последовательным портом может просто иметь две функции для «отправки данных» и «приема данных». На более низком уровне драйвер устройства, реализующий эти функции, будет взаимодействовать с конкретным контроллером последовательного порта, установленным на компьютере пользователя. Команды, необходимые для управления 16550 UART , сильно отличаются от команд, необходимых для управления FTDI.преобразователь последовательного порта, но каждый аппаратный драйвер устройства абстрагирует эти детали в один и тот же (или аналогичный) программный интерфейс.
Развитие [ править ]
Написание драйвера устройства требует глубокого понимания того, как аппаратное и программное обеспечение работает для данной функции платформы . Поскольку для работы драйверам требуется низкоуровневый доступ к аппаратным функциям, драйверы обычно работают в среде с высокими привилегиями и могут вызвать проблемы в работе системы, если что-то пойдет не так. Напротив, большинство программ пользовательского уровня в современных операционных системах может быть остановлено без значительного воздействия на остальную часть системы. Даже драйверы, выполняющиеся в пользовательском режиме, могут привести к сбою системы, если устройство ошибочно запрограммировано . Эти факторы делают диагностику проблем более сложной и опасной. [3]
Таким образом, задача написания драйверов обычно выпадает на долю инженеров-программистов или компьютерных инженеров, которые работают в компаниях, занимающихся разработкой оборудования. Это потому, что они лучше, чем большинство посторонних, осведомлены о конструкции своего оборудования. Более того, традиционно считалось, что в интересах производителей оборудования гарантировать, что их клиенты могут использовать их оборудование оптимальным образом. Обычно драйвер логического устройства (LDD) создается поставщиком операционной системы, а драйвер физического устройства (PDD) реализуется поставщиком устройства. Однако в последние годы сторонние производители написали множество драйверов для проприетарных устройств, в основном для использования с бесплатными и открытыми исходными кодами. операционные системы . В таких случаях важно, чтобы производитель оборудования предоставил информацию о том, как устройство взаимодействует. Хотя эту информацию можно получить с помощью обратного проектирования , с аппаратным обеспечением это намного сложнее, чем с программным.
Microsoft попыталась уменьшить нестабильность системы из-за плохо написанных драйверов устройств, создав новую структуру для разработки драйверов, которая называется Windows Driver Framework (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 + или socal Fibre Channel Arbitrated Loop (FCAL)
- soc: контроллеры SPARC Storage Array (SSA) и управляющее устройство
- socal: последовательные оптические контроллеры для 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) - кроссплатформенный проект интерфейса драйвера.
- Driver Framework (dxd) - кроссплатформенная среда драйверов C ++ с открытым исходным кодом для KMDF и IOKit [15]
Идентификаторы [ править ]
Устройство на шине PCI или USB идентифицируется двумя идентификаторами, каждый из которых состоит из 4 шестнадцатеричных чисел. Идентификатор поставщика идентифицирует поставщика устройства. Идентификатор устройства идентифицирует конкретное устройство от этого производителя / поставщика.
Устройство PCI часто имеет пару идентификаторов для основного чипа устройства, а также пару идентификаторов подсистем, которые идентифицируют поставщика, который может отличаться от производителя чипа.
См. Также [ править ]
- Драйвер (программное обеспечение)
- Водитель класса
- Контроллер (вычисления)
- Синтез и проверка драйверов устройств
- Обертка драйвера
- Свободное программное обеспечение
- Прошивка
- Прерывать
- Загружаемый модуль ядра
- Makedev
- Оборудование с открытым исходным кодом
- Драйвер принтера
- Репликант (операционная система)
- udev
Ссылки [ править ]
- ^ a b "Что такое драйвер всего устройства?" . WhatIs.com . TechTarget . Проверено 19 марта 2018 .
- ^ EMC Education Services (2010). Хранение и управление информацией: хранение, управление и защита цифровой информации . Джон Вили и сыновья. ISBN 9780470618332.
- ^ Берк, Тимоти (1995). Написание драйверов устройств: учебник и справочник . Цифровая пресса. ISBN 9781555581411.
- ^ «МАКЕДЕВ - Команда Linux - Команда Unix» . Linux.about.com. 2009-09-11 . Проверено 17 сентября 2009 .
- ^ «Пользовательский режим против драйверов режима ядра» . Microsoft . 2003-03-01. Архивировано из оригинала на 2008-03-09 . Проверено 4 марта 2008 .
- ^ «Введение в структуру драйвера пользовательского режима (UMDF)» . Microsoft . 2006-10-10 . Проверено 4 марта 2008 .
- ^ Дебора Морли (2009). Понимание компьютеров 2009: сегодня и завтра . Cengage Learning. ISBN 9780324830132.
- ^ Компьютерная периферия и интерфейсы . Технические публикации Пуна. Январь 2008. С. 5–8. ISBN 978-8184314748. Проверено 3 мая 2016 .
- ^ "Что такое драйверы устройств и зачем они нам нужны?" . drivers.com . 17 апреля 2015 года . Проверено 19 марта 2018 года .
- ^ "CCISS" . SourceForge . 2010 . Проверено 11 августа 2010 .
Драйверы для контроллеров HP (ранее Compaq) Smart Array, которые обеспечивают возможность аппаратного RAID.
- ^ Рассел, Стив; и другие. (2003-10-21). Аббревиатуры и акронимы . Консолидация серверов с помощью IBM eserver xSeries 440 и VMware ESX Serve . Международная организация технической поддержки IBM. п. 207. ISBN. 0-7384-2684-9. Проверено 14 августа 2011 .[ постоянная мертвая ссылка ]
- ^ "Патент США 5969841 - модуль связи гигабода с полученным сигналом обнаружения мощности" . ООО "ПатентСторм". Архивировано из оригинала 2011-06-12 . Проверено 8 сентября 2009 .
Усовершенствованный модуль связи Gigabaud (GLM) предназначен для выполнения двунаправленной передачи данных между хост-устройством и носителем последовательной передачи.
- ^ «Унифицированная аудио модель (Windows CE 5.0)» . msdn.microsoft.com . Проверено 19 сентября 2016 .
- ^ Dell США. «Что такое драйверы DCH и почему о них нужно знать? | Dell США» . www.dell.com . Проверено 29 октября 2020 .
- ^ "Структура драйвера: Главная страница" . водитель . Проверено 19 сентября 2016 .
Внешние ссылки [ править ]
- Центр разработки оборудования для Windows
- Списки совместимого оборудования Linux и драйверы Linux
- Общие сведения о драйверах современных устройств (Linux)
- BinaryDriverHowto, Ubuntu.
- Источник драйверов для Linux