Jump to content

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

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

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

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

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

Разработка

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

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

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

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

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

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

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

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

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

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

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

Приложения

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Не хватает эффективных инструментов обнаружения уязвимостей ядра, особенно для операционных систем с закрытым исходным кодом, таких как 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. ^ Перейти обратно: а б «Что такое драйвер устройства?» . WhatIs.com . ТехТаржет. Архивировано из оригинала 13 февраля 2021 года . Проверено 19 марта 2018 г.
  2. ^ Образовательные услуги EMC (2010 г.). Хранение информации и управление ею: хранение, управление и защита цифровой информации . Джон Уайли и сыновья. ISBN  9780470618332 . Архивировано из оригинала 13 февраля 2021 г. Проверено 10 ноября 2020 г.
  3. ^ Берк, Тимоти (1995). Написание драйверов устройств: учебное пособие и справочник . Цифровая пресса. ISBN  9781555581411 . Архивировано из оригинала 26 января 2021 г. Проверено 5 августа 2016 г.
  4. ^ «MAKEDEV — Команда Linux — Команда Unix» . Linux.about.com. 11 сентября 2009 г. Архивировано из оригинала 30 апреля 2009 г. Проверено 17 сентября 2009 г.
  5. ^ Таненбаум, Эндрю; Вудхалл, Альберт (2006). Операционные системы, проектирование и внедрение (3-е изд.). Река Аппер-Сэддл, Нью-Джерси: Притворный зал Пирсона. п. 256. ИСБН  0-13-142938-8 .
  6. ^ Иосифович Павел; Ионеску, Алекс; Руссинович, Марк; Соломон, Дэвид (2017). Внутреннее устройство Windows, часть 1 (Седьмое изд.). Редмонд, Вашингтон: Microsoft Press. ISBN  978-0-7356-8418-8 .
  7. ^ «Введение в структуру драйверов пользовательского режима (UMDF)» . Майкрософт . 10 октября 2006 г. Архивировано из оригинала 7 января 2010 г. Проверено 4 марта 2008 г.
  8. ^ Дебора Морли (2009). Понимание компьютеров 2009: сегодня и завтра . Cengage Обучение. ISBN  9780324830132 . Архивировано из оригинала 9 июня 2021 г. Проверено 10 ноября 2020 г.
  9. ^ Компьютерная периферия и интерфейсы . Технические публикации Пуна. Январь 2008 г. стр. 5–8. ISBN  978-8184314748 . Проверено 3 мая 2016 г. [ постоянная мертвая ссылка ]
  10. ^ «Что такое драйверы устройств и зачем они нам нужны?» . Drivers.com . 17 апреля 2015 года. Архивировано из оригинала 20 ноября 2016 года . Проверено 19 марта 2018 г.
  11. ^ «ЦИСС» . СоурсФордж . 2010. Архивировано из оригинала 21 августа 2010 г. Проверено 11 августа 2010 г. Драйверы для контроллеров HP (ранее Compaq) Smart Array, которые обеспечивают возможность аппаратного RAID.
  12. ^ Рассел, Стив; и др. (21 октября 2003 г.). Аббревиатуры и акронимы . Международная организация технической поддержки IBM. п. 207. ИСБН  0-7384-2684-9 . Проверено 14 августа 2011 г. {{cite book}}: |work= игнорируется ( помогите ) [ постоянная мертвая ссылка ]
  13. ^ «Патент США 5969841 — Модуль связи Gigabaud с принимаемым сигналом определения мощности» . ООО ПатентСторм. Архивировано из оригинала 12 июня 2011 г. Проверено 8 сентября 2009 г. Улучшенный модуль Gigabaud Link (GLM) предназначен для двунаправленной передачи данных между хост-устройством и последовательной средой передачи.
  14. ^ «Унифицированная аудиомодель (Windows CE 5.0)» . Сеть разработчиков Microsoft . Архивировано из оригинала 22 июня 2017 г. Проверено 19 сентября 2016 г.
  15. ^ Делл США. «Что такое драйверы DCH и почему вам нужно о них знать? | Dell США» . www.dell.com . Проверено 29 октября 2020 г.
  16. ^ «dxd — платформа драйверов dynax: главная страница» . dxd.dynax.at . Архивировано из оригинала 29 мая 2016 г. Проверено 19 сентября 2016 г.
  17. ^ Талеби, Сейед Мохаммаджавад Сейед; Таваколи, Хамид; Чжан, Ханг; Чжан, Чжэн; Сани, Ардалан Амири; Цянь, Чжиюнь (2018). Charm: облегчение динамического анализа драйверов устройств мобильных систем . стр. 291–307. ISBN  9781939133045 . Архивировано из оригинала 5 ноября 2022 года . Проверено 5 ноября 2022 г.
  18. ^ Гудин, Дэн (14 октября 2022 г.). «Как ошибка Microsoft открыла миллионы компьютеров для мощных атак вредоносного ПО» . Арс Техника . Архивировано из оригинала 8 ноября 2022 года . Проверено 8 ноября 2022 г.
  19. ^ Пан, Цзяньфэн; Ян, Гуанлу; Фань, Сяокао (2017). Digtool: {основанная на виртуализации} платформа для обнаружения уязвимостей ядра . стр. 149–165. ISBN  9781931971409 . Проверено 5 ноября 2022 г.
  20. ^ Кинг, Бертель (18 июня 2022 г.). «Драйверы оборудования с закрытым исходным кодом и с открытым исходным кодом: почему это важно» . МУО . Архивировано из оригинала 5 ноября 2022 года . Проверено 5 ноября 2022 г.
  21. ^ Бранскомб, Мэри (7 апреля 2022 г.). «Как Microsoft блокирует уязвимые и вредоносные драйверы в Защитнике, сторонних инструментах безопасности и в Windows 11» . Техреспублика . Архивировано из оригинала 5 ноября 2022 года . Проверено 5 ноября 2022 г.
  22. ^ Гудин, Дэн (5 октября 2022 г.). «Не видно решения лазейки шириной в милю, которая годами преследовала ключевую защиту Windows» . Арс Техника . Архивировано из оригинала 5 ноября 2022 года . Проверено 5 ноября 2022 г.
  23. ^ Давенпорт, Корбин. « Атаки типа «Принеси свой собственный уязвимый драйвер» ломают Windows» . Как компьютерщик . Архивировано из оригинала 5 ноября 2022 года . Проверено 5 ноября 2022 г.
  24. ^ «Предупреждение безопасности Windows 10: уязвимости обнаружены в более чем 40 драйверах» . Мигающий компьютер . Архивировано из оригинала 5 ноября 2022 года . Проверено 5 ноября 2022 г.
  25. ^ Гудин, Дэн (13 июля 2022 г.). «Уязвимости, которые могут привести к необнаружимому заражению, затрагивают 70 моделей ноутбуков Lenovo» . Арс Техника . Архивировано из оригинала 5 ноября 2022 года . Проверено 5 ноября 2022 г.
  26. ^ Ридли, Джейкоб (9 февраля 2022 г.). «Сегодня вам понадобится обновить драйверы Wi-Fi и Bluetooth» . ПК-геймер . Архивировано из оригинала 5 ноября 2022 года . Проверено 5 ноября 2022 г.
  27. ^ «Беспроводная сеть BlueBorne атакует миллиарды устройств Bluetooth» . Threatpost.com . Архивировано из оригинала 5 ноября 2022 года . Проверено 5 ноября 2022 г.
  28. ^ Спадафора, Энтони (12 января 2022 г.). «Установка игровых драйверов может сделать ваш компьютер уязвимым для кибератак» . ТехРадар . Архивировано из оригинала 5 ноября 2022 года . Проверено 5 ноября 2022 г.
  29. ^ «HP исправляет уязвимый драйвер, скрывавшийся в принтерах 16 лет» . ЗДНЕТ . Архивировано из оригинала 5 ноября 2022 года . Проверено 5 ноября 2022 г.
  30. ^ «Тонкая изоляция ядра» . Марс-research.github.io . Архивировано из оригинала 15 сентября 2022 года . Проверено 15 сентября 2022 г.
  31. ^ Фетцер, Мэри. «Автоматическая изоляция драйверов устройств защищает от ошибок в операционных системах» . Университет штата Пенсильвания через techxplore.com . Архивировано из оригинала 15 сентября 2022 года . Проверено 15 сентября 2022 г.
  32. ^ Хуан, Юнчжэ; Нараянан, Викрам; Детвейлер, Дэвид; Хуан, Кайминг; Тан, Банда; Джагер, Трент; Бурцев, Антон (2022). «KSplit: автоматизация изоляции драйверов устройств» (PDF) . Архивировано (PDF) из оригинала 15 сентября 2022 года . Проверено 15 сентября 2022 г.
  33. ^ Вульф 1974, стр. 337–345.
  34. ^ Деннинг 1976
  35. ^ Swift 2005, стр. 29, цитата: «изоляция, контроль ресурсов, проверка решений (проверка) и восстановление ошибок».
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 2b368f91b607f3972e3fc3b8764a5560__1722458460
URL1:https://arc.ask3.ru/arc/aa/2b/60/2b368f91b607f3972e3fc3b8764a5560.html
Заголовок, (Title) документа по адресу, URL1:
Device driver - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)