Jump to content

Драйвер устройства

(Перенаправлено от аппаратных драйверов )

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

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

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

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

Разработка

[ редактировать ]

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

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

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

Apple имеет рамку с открытым исходным кодом для разработки драйверов на MacOS , который называется набором ввода-вывода.

В средах Linux программисты могут создавать драйверы устройств в качестве части ядра , отдельно в виде нагрузочных модулей или как драйверы пользователя (для определенных типов устройств, где существуют интерфейсы ядра, такие как USB-устройства). Makedev включает в себя список устройств в Linux, включая TTYS (терминал), LP ( параллельный порт ), HD (диск), цикл и звук (они включают в себя миксер , последователь , DSP и аудио). [ 4 ]

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

Уровни привилегий

[ редактировать ]

В зависимости от операционной системы, драйверам устройств может быть разрешено работать на различных уровнях привилегий . Выбор того, в каком уровне привилегии есть драйверы, в значительной степени определяется типом ядра , который использует операционная система. Операционная система, которая использует монолитное ядро , такое как ядро ​​Linux , обычно запускает драйверы устройств с той же привилегией, что и все другие объекты ядра. Напротив, система, разработанная вокруг Microkernel , такой как Minix , будет размещать драйверы в качестве процессов, независимых от ядра, но которая использует его для основных функций ввода-вывода и для передачи сообщений между пользовательскими программами и друг с другом. [ 5 ] В Windows NT , системе с гибридным ядром , драйверы устройств обычно работают в режиме ядра или в режиме пользователя . [ 6 ]

Наиболее распространенным механизмом разделения памяти на различные уровни привилегий является защитные кольца . Во многих системах, таких как системы с x86 и ARM , переключение между кольцами налагает штраф за производительность, что является фактором, который разработчики операционной системы и встроенные инженеры программного обеспечения рассматривают при создании драйверов для устройств, которые предпочитают работать с низкой задержкой, такими как сеть интерфейсные карты . Основным преимуществом запуска драйвера в пользовательском режиме является улучшенная стабильность, так как плохо написанный драйвер устройства пользователя не может сбить систему, перезаписывая память ядра. [ 7 ]

Приложения

[ редактировать ]

Из -за разнообразия современных Аппаратные и операционные системы, драйверы работают во многих различных средах. [ 8 ] Водители могут взаимодействовать с:

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

  • Для оборудования:
    • Взаимодействие напрямую
    • Написание или чтение из регистра управления устройствами
    • Использование некоторого интерфейса более высокого уровня (например, видео BIOS )
    • Использование другого драйвера устройства более низкого уровня (например, драйверы файловой системы с использованием дисковых драйверов)
    • Моделирование работы с аппаратным обеспечением, делая что -то совершенно другое [ 9 ]
  • Для программного обеспечения:
    • Позволяя операционной системе прямой доступ к аппаратным ресурсам
    • Внедрение только примитивов
    • Реализация интерфейса для программного обеспечения без водителя (например, Twain )
    • Внедрение языка, иногда довольно высокого уровня (например, постскриптум )

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

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

[ редактировать ]

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

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

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

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

[ редактировать ]

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

  • FAS: быстрый/широкий контроллер SCSI
  • HME: быстрый (10/100 Мбит/с) Ethernet
  • ISP: Дифференциальные контроллеры SCSI и Sunswift Card
  • GLM: (модуль связи Gigabaud [ 13 ] ) Ultrasci Controllers
  • SCSI: устройства с последовательным интерфейсом с небольшим компьютером (SCSI)
  • SF: SOC+ или Arbbited Cannel Cannel Social Fiber Cannel (FCAL)
  • SOC: контроллеры SPARC Storage Array (SSA) и устройство управления
  • Социальные: серийные оптические контролеры для FCAL (SOC+)

Идентификаторы

[ редактировать ]

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

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

Безопасность

[ редактировать ]

Устройства часто имеют большое количество разнообразных и индивидуальных драйверов устройств, работающих в ядре операционной системы (ОС), и часто содержат различные ошибки и уязвимости , что делает их целью для эксплойтов . [ 17 ] Принесите свой собственный уязвимый драйвер (BYOVD). Используйте подписанные, старые драйверы, которые содержат недостатки, которые позволяют хакерам вставлять вредоносный код в ядро. [ 18 ]

Не хватает эффективных инструментов обнаружения уязвимости ядра, особенно для OSE с закрытым исходным кодом, таких как Microsoft Windows [ 19 ] где исходный код драйверов устройства в основном не общедоступен (открытый исходный код) [ 20 ] И водители часто также имеют много привилегий. [ 21 ] [ 22 ] [ 23 ] [ 24 ]

Такие уязвимости также существуют у драйверов в ноутбуках, [ 25 ] водители для Wi -Fi и Bluetooth, [ 26 ] [ 27 ] Драйверы игры/графики, [ 28 ] и водители в принтерах. [ 29 ]

Группа исследователей безопасности считает отсутствие изоляции как один из основных факторов, подрывающих безопасность ядра , [ 30 ] и опубликовала структуру изоляции для защиты ядра операционной системы, в первую очередь монолитное ядро ​​Linux , которое, по их словам, получает ~ 80 000 коммитов /год для своих водителей. [ 31 ] [ 32 ]

Важным рассмотрением в проектировании ядра является поддержка, которую он обеспечивает для защиты от неисправностей ( устойчивость к разлому ) и от злонамеренного поведения ( безопасность ). Эти два аспекта обычно не четко различаются, и принятие этого различия в конструкции ядра приводит к отказу от иерархической структуры для защиты . [ 33 ]

Механизмы или политики, предоставленные ядром, могут быть классифицированы в соответствии с несколькими критериями, включая: статический (принудительный во время компиляции ) или динамический (принудительный во время выполнения ); превентивное или после обнаружения; в соответствии с принципами защиты, которые они удовлетворяют (например, Деннинг [ 34 ] [ 35 ] ); являются ли они поддерживаемыми оборудованием или на основе языка; являются ли они скорее открытым механизмом или обязательной политикой; и многое другое.

Смотрите также

[ редактировать ]
  1. ^ Jump up to: а беременный "Что такое драйвер устройства?" Полем Whatis.com . TechTarget. Архивировано из оригинала 13 февраля 2021 года . Получено 19 марта 2018 года .
  2. ^ EMC Education Services (2010). Информационное хранилище и управление: хранение, управление и защита цифровой информации . Джон Уайли и сыновья. ISBN  9780470618332 Полем Архивировано из оригинала 2021-02-13 . Получено 2020-11-10 .
  3. ^ Берк, Тимоти (1995). Написание драйверов устройств: учебник и ссылка . Цифровая пресса. ISBN  9781555581411 Полем Архивировано из оригинала 2021-01-26 . Получено 2016-08-05 .
  4. ^ "Makedev - команда Linux - команда Unix" . Linux.about.com. 2009-09-11. Архивировано с оригинала на 2009-04-30 . Получено 2009-09-17 .
  5. ^ Таненбаум, Эндрю; Вудхалл, Альберт (2006). Операционные системы, проектирование и реализация (3 -е изд.). Верхняя седл -река, Нью -Джерси: Пирсон Притенс Холл. п. 256. ISBN  0-13-142938-8 .
  6. ^ Йосифович, Павел; Ионеску, Алекс; Русснович, Марк; Соломон, Дэвид (2017). Windows Internals, часть 1 (седьмое изд.). Редмонд, Вашингтон: Microsoft Press. ISBN  978-0-7356-8418-8 .
  7. ^ «Введение в систему драйвера пользователя (UMDF)» . Microsoft . 2006-10-10. Архивировано из оригинала 2010-01-07 . Получено 2008-03-04 .
  8. ^ Дебора Морли (2009). Понимание компьютеров 2009: сегодня и завтра . Cengage Learning. ISBN  9780324830132 Полем Архивировано из оригинала 2021-06-09 . Получено 2020-11-10 .
  9. ^ Компьютерные периферийные устройства и интерфейсы . Технические публикации Пуна. Январь 2008 года. С. 5–8. ISBN  978-8184314748 Полем Получено 2016-05-03 . [ Постоянная мертвая ссылка ]
  10. ^ "Что такое драйверы устройств и почему они нам нужны?" Полем Drivers.com . 17 апреля 2015 года. Архивировано с оригинала 20 ноября 2016 года . Получено 19 марта 2018 года .
  11. ^ "CCISS" . Sourceforge . 2010. Архивировано из оригинала 2010-08-21 . Получено 2010-08-11 . Драйверы для контроллеров интеллектуальных массивов HP (ранее Compaq), которые предоставляют аппаратные возможности RAID.
  12. ^ Рассел, Стив; и др. (2003-10-21). Сокращения и аббревиатуры . IBM Международная организация технической поддержки. п. 207. ISBN  0-7384-2684-9 Полем Получено 2011-08-14 . {{cite book}}: |work= игнорируется ( помощь ) [ Постоянная мертвая ссылка ]
  13. ^ «Патент США 5969841 - Модуль связи Gigabaud с полученным сигналом обнаружения мощности» . Patentstorm LLC. Архивировано из оригинала 2011-06-12 . Получено 2009-09-08 . Улучшенный модуль связи Gigabaud (GLM) предназначен для выполнения двухнаправленных передач данных между хост-устройством и последовательной передачей.
  14. ^ «Unified Audio Model (Windows CE 5.0)» . Microsoft Developer Network . Архивировано из оригинала 2017-06-22 . Получено 2016-09-19 .
  15. ^ Мы нас делом. «Что такое драйверы DCH и почему вам нужно знать о них ? www.dell.com . Получено 2020-10-29 .
  16. ^ "DXD - Dynax Driver Framework: главная страница" . dxd.dynax.at . Архивировано с оригинала 2016-05-29 . Получено 2016-09-19 .
  17. ^ Талеби, Сейед Мохаммаджавад Сейед; Таваколи, Хамид; Чжан, подвес; Чжан, Чжэн; Сани, Ардалан Амири; Qian, Zhiyun (2018). Очарование: облегчение динамического анализа драйверов устройств мобильных систем . С. 291–307. ISBN  9781939133045 Полем Архивировано из оригинала 5 ноября 2022 года . Получено 5 ноября 2022 года .
  18. ^ Гутин, Дэн (14 октября 2022 года). «Как ошибка Microsoft открыла миллионы ПК для мощных атак в вредоносных программах» . Ars Technica . Архивировано из оригинала 8 ноября 2022 года . Получено 8 ноября 2022 года .
  19. ^ Пан, Цзянфенг; Ян, Гуанлу; Фан, Xaocao (2017). Digtool: {на основе виртуализации} структура для обнаружения уязвимостей ядра Стр. 149–1 ISBN  9781931971409 Полем Получено 5 ноября 2022 года .
  20. ^ Король, Бертель (18 июня 2022 года). «Закрытый исходный код против оборудования с открытым исходным кодом: почему это важно» . Мюо . Архивировано из оригинала 5 ноября 2022 года . Получено 5 ноября 2022 года .
  21. ^ Бранскомб, Мэри (7 апреля 2022 года). «Как Microsoft блокирует уязвимые и злонамеренные драйверы в защитнике, сторонние инструменты безопасности и в Windows 11» . TechRepublic . Архивировано из оригинала 5 ноября 2022 года . Получено 5 ноября 2022 года .
  22. ^ Гутин, Дэн (5 октября 2022 г.). «Не было видно для лазейки шириной в милю, преследующей ключевую защиту Windows в течение многих лет» . Ars Technica . Архивировано из оригинала 5 ноября 2022 года . Получено 5 ноября 2022 года .
  23. ^ Давенпорт, Корбин. « Принесите свой собственный уязвимый драйвер». Атаки разбивают окна » . Как делать гик . Архивировано из оригинала 5 ноября 2022 года . Получено 5 ноября 2022 года .
  24. ^ «Windows 10 Security Alert: уязвимости, найденные в более чем 40 драйверах» . BleepingComputer . Архивировано из оригинала 5 ноября 2022 года . Получено 5 ноября 2022 года .
  25. ^ Гутин, Дэн (13 июля 2022 года). «Уязвимости, которые могут позволить неразрешенным инфекциям, влияют на 70 моделей ноутбука Lenovo» . Ars Technica . Архивировано из оригинала 5 ноября 2022 года . Получено 5 ноября 2022 года .
  26. ^ Ридли, Джейкоб (9 февраля 2022 г.). «Вы захотите обновить свои драйверы Wi-Fi и Bluetooth сегодня» . ПК Геймер . Архивировано из оригинала 5 ноября 2022 года . Получено 5 ноября 2022 года .
  27. ^ «Беспроводные» синие »атакуют миллиарды устройств Bluetooth» . chegenpost.com . Архивировано из оригинала 5 ноября 2022 года . Получено 5 ноября 2022 года .
  28. ^ Spadafora, Энтони (12 января 2022 года). «Установка игровых драйверов может оставить ваш компьютер уязвимым для кибератак» . Techradar . Архивировано из оригинала 5 ноября 2022 года . Получено 5 ноября 2022 года .
  29. ^ «Уязвимый драйвер HP уязвимый водитель в принтерах в течение 16 лет» . Zdnet . Архивировано из оригинала 5 ноября 2022 года . Получено 5 ноября 2022 года .
  30. ^ «Мелкозернистая изоляция ядра» . Mars-research.github.io . Архивировано из оригинала 15 сентября 2022 года . Получено 15 сентября 2022 года .
  31. ^ Фетцер, Мэри. «Автоматическое изоляция драйвера устройства защищает от ошибок в операционных системах» . Университет штата Пенсильвания через TechXplore.com . Архивировано из оригинала 15 сентября 2022 года . Получено 15 сентября 2022 года .
  32. ^ Хуан, Юнжхе; Нараянан, Викрам; Детвейлер, Дэвид; Хуан, Каиминги; Тан, банда; Джегер, Трент; Бертев, Антон (2022). «Ksplit: автоматизация изоляции драйвера устройства» (PDF) . Архивировано (PDF) из оригинала 15 сентября 2022 года . Получено 15 сентября 2022 года .
  33. ^ Wulf 1974 с.337–345
  34. ^ Деннинг 1976
  35. ^ Swift 2005, с.29 Цитата: «Изоляция, контроль ресурсов, проверка решений (проверка) и восстановление ошибок».
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: d12db2ded3aef91a3aa8711d105e5a11__1725390060
URL1:https://arc.ask3.ru/arc/aa/d1/11/d12db2ded3aef91a3aa8711d105e5a11.html
Заголовок, (Title) документа по адресу, URL1:
Device driver - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)