2010-09-06 3 views
1

Я знаю, что ядра ОС состоят из драйверов, но как драйвер становится частью os ?, сам ли декомпилирует себя, а затем добавляет драйвер и перекомпилирует себя ?, или являются плагинами драйверов для ядро ?, кто-то сказал мне, что для большинства операционных систем драйверы фактически становятся частью ядра, но всякий раз, когда я скомпилирую программу ac, она превращается в обычный исполняемый файлКак драйверы становятся частью операционных систем?

+0

Если вы создаете ядро ​​ОС, настройки вашего компилятора просто отличаются от того, что вы используете при создании исполняемого файла. Основы те же, но компилятор делает некоторые особые вещи, если вы создаете «образ», достаточно сырой, чтобы загружать машину. –

ответ

4

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

+0

И, конечно же, в операционной системе с микроядрами драйверы - это просто обычные программы пользовательского пространства, например, любые другие (скажем, веб-браузер или текстовый редактор). –

1

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

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

2

Это зависит от о/с.

В классическом ядре был монолитный исполняемый файл, содержащий все драйверы, и был перестроен, когда новый драйвер необходимо было добавить, включая код для нового драйвера вместе со всеми старыми.

В современной Linux и, возможно, в других ОС также динамически загружаются ядра при необходимости. Драйвер создан в форме, которая позволяет ядру выполнять эту загрузку; как правило, это означает, что в общем объекте или в библиотеке динамической компоновки.

Смежные вопросы