Как драйверы становятся частью ядра? - PullRequest
2 голосов
/ 08 сентября 2010

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

Ответы [ 2 ]

2 голосов
/ 21 июня 2018

Я собираюсь ответить на это, хотя 7 лет назад его спросили о тех, кто наткнулся на него все эти годы спустя.

  1. Ядро является сердцем операционной системы и, следовательно, включает в себяподдержка широкого спектра функций, которые будут полагаться на всю систему.
  2. Подпрограммы системных служб не обязательно должны присутствовать в одном образе ядра (например, в Windows есть FltMgr.sys для обработкиФайловая система, и об этом сообщается через процедуры управления устройством.)
  3. Драйвер устройства в режиме ядра, с точки зрения непрофессионала, является расширением ядра.Вы будете выполнять с текущим уровнем привилегий 0 (для Кольца 0), и, таким образом, ограничения на доступ к памяти и использование определенных инструкций будут отменены для вас.Ваш уровень доверия также будет лучше.

Драйвер устройства в режиме ядра по сути будет "модулем" для ядра.У вас есть динамическая библиотека ссылок (DLL) в пользовательском режиме в Windows или Dylib в OS X ... Думайте о драйвере режима ядра как об эквивалентном режиме ядра, за исключением того, что он не имеет для расширения реального ядра, это может быть для функциональности, которая должна быть реализована на уровне ядра для стороннего приложения.

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

Точки:

  1. Драйверы устройств режима ядра имеютте же привилегии, что и у действующего ядра ОС.
  2. Предполагается, что драйверы устройств режима ядра могут использовать некоторые из API-интерфейсов ядра ОС, чтобы помочь с реализацией функциональных возможностей, которые работают с тем, как была разработана ОС (например,Файловая система, процесс, реестр (или эквивалент), управление памятью и т. Д.).
  3. Драйверы устройств в режиме ядра в основном являются «расширением» ядра ОС, поскольку вы не заменяете реальное ядро, но вытакже на том же уровне привилегий (упоминается как # 1) и может теоретически расширить функциональность всей системы, если вам так хочется (например, добавить поддержку программного обеспечения пользовательского режима, чтобы полагаться на функциональность драйверов устройств с помощью таких методов связи, как шлюзы вызовов или межсетевой вызов).Процесс связи).

Я надеюсь, что этов какой-то мере помогли будущим спотыкаться в этом крайне старом потоке;вопрос был действительно хорош.

2 голосов
/ 08 сентября 2010

Драйвер скомпилирован в библиотеку, которая предоставляет известный интерфейс. Затем ядро ​​сканирует драйверы при запуске и загружает их в память ядра. Некоторые операционные системы, такие как linux, также поддерживают модули ядра, которые можно загружать / выгружать во время работы ОС ...

...