Я знаю, что ядра ОС состоят из драйверов, но как драйвер становится частью ОС? Декомпилирует ли ядро само себя, а затем добавляет драйвер и перекомпилирует себя? Или это подключаемые модули драйверов для ядра. ?, кто-то сказал мне, что для большинства операционных систем драйверы фактически становятся частью ядра, но всякий раз, когда я компилирую программу ac, она превращается в обычный исполняемый файл
как драйверы становятся частью операционных систем?
Ответы (3)
Архитектура драйвера полностью зависит от вашей операционной системы. Для большинства операционных систем, работающих на компьютерах (в отличие от встроенных устройств), думать о драйверах как о «надстройках» для ядра довольно точно. Тем не менее, существует множество старых, небольших и менее сложных операционных систем, которые требуют, чтобы вы встраивали драйвер как часть ядра - динамическая загрузка невозможна. В наши дни несколько операционных систем поддерживают драйверы «пользовательского режима», то есть драйверы устройств, которые вообще никогда не запускаются в пространстве памяти ядра.
Это зависит от а / с.
Классически ядро было монолитным исполняемым файлом, содержащим все драйверы, и перестраивалось, когда нужно было добавить новый драйвер, включая код для нового драйвера вместе со всеми старыми.
В современном Linux и, возможно, в других ОС драйверы динамически загружаются ядром по мере необходимости. Драйвер создается в форме, позволяющей ядру выполнять эту загрузку; как правило, это означает формат общего объекта или библиотеки динамической компоновки.
В операционных системах, таких как Linux, драйверы могут быть фактически скомпилированы в образ ядра. Хотя даже если они статически связаны, они вполне могут демонстрировать архитектуру типа подключаемого модуля, которая позволяет легко включать только необходимые драйверы.
Кроме того, они динамически связаны и загружаются либо во время загрузки, либо по запросу, когда это требуется некоторым программным обеспечением системного уровня.