4

Являются ли драйверы устройств частью ядра ОС или вне ядра, или некоторые из них являются частью ядра, а другие находятся за пределами ядра?

Если третий верен, драйверы каких устройств обычно являются частью ядра, а какие находятся вне ядра?

Если операционная система должна быть конкретной, мне интересно узнать о Linux (Ubuntu) и Windows 7.

Спасибо!

2 ответа2

5

В Windows все драйверы находятся в отдельных файлах, отличных от ядра.

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

Для Linux вам нужны устройства, которые должны быть доступны во время загрузки, чтобы быть встроенными в ядро. Сюда входят драйверы контроллера дисков, сетевые драйверы (для загрузки по сети), драйверы последовательного порта или консоли VGA (для отображения диагностических сообщений) и драйверы шины для промежуточного оборудования, необходимого ЦП для доступа к этим устройствам (например, контроллер USB, PCIe, IDE, и / или, возможно, драйверы чипсета).

Я уверен, что для Windows возможно включить драйверы как часть ядра. Это может быть сделано в некоторых встроенных или настраиваемых версиях Windows, но не в стандартных ПК Windows, насколько я знаю. Я на самом деле думаю, что пара очень элементарных драйверов технически находятся внутри ядра (например, VgaSave и Beep), но я могу ошибаться.

Windows может пометить некоторые драйверы как драйверы "Boot Time", которые обычно относятся к той же категории, что и драйверы, указанные выше. Если вы войдете в безопасный режим, вы увидите список прокручиваемых имен драйверов, это все драйверы времени загрузки.

5

Есть два способа интерпретировать «часть ядра».

Ядро запускается (при загрузке) как файл на диске. Если вы спрашиваете о диске, они не являются частью ядра, а являются отдельными файлами. Почти все системы теперь имеют их как отдельные файлы. В действительно старые времена UNIX добавление драйвера означало добавление файлов .o к файлам ядра .o и перекомпоновку ядра.

Если вы имели в виду «часть запущенного образа ядра», это зависит. Windows может сделать оба. Фактически драйвер дисплея не был частью ядра и стал частью образа запуска ядра некоторое время назад (с nt 3.51 до NT4.0) по соображениям производительности.

Существует две основные школы дизайна ОС:

Один называется макроядром. Все вещи ОС обрабатываются в одном работающем образе ядра. Linux и большинство юниксов работают таким образом. Преимущество в том, что это быстро, все части ядра могут читать другие части ядра и обмениваться данными, используя чтение и запись в память. Недостатком является то, что через некоторое время это становится грязным, и теперь вам нужно координировать использование. Если вы можете сделать что-то нарочно, иногда вы можете сделать это случайно. Там нет защиты, и вы можете получить панику ядра.

Другое называется микроядром (которым Windows NT изначально была, а Windows по-прежнему вроде). Теория состоит в том, что ядро не работает, но передает работу специальному коду, но не выполняет код в пространстве памяти ядра. Этот другой код не может затронуть память ядра или чью-либо еще. Плюс, изоляция от ошибок - плохой неядерный код не может испортить ядро. Недостаток - переход назад и вперед в режим ядра замедляет процесс. Вот почему драйвер дисплея был перенесен в ядро в NT 4.0, медлительность.

Конечно, это обобщения, я давно не следил за дизайном микроядра Windows, хотя могу быть относительно уверен в дизайне Linux.

MacOSX на самом деле интересен с технической точки зрения, используя гибридное микроядро / макро-UNIX-ядро. Раньше он также поддерживал старые двоичные файлы OS9 - выход из пространства, не относящегося к ядру, которые были вызовами ядра в MacOS9.

DragonFly BSD - интересный ответвление FreeBSD, которое все еще является макроядром, но использует передачу сообщений как своего рода изоляцию плохого человека и в результате облегчает работу ядра.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .