2014-02-13 1 views
1

Я являюсь драйвером устройства. Пока что я выполнил небольшие модули. Мне было интересно, как linux позволяет вставлять модуль даже во время его работы? Я искал его, но не удовлетворен или, возможно, не мог понять. Все, что у меня есть, - это демон linux, который выполняет modprobe, добавляет новый модуль. Но мой вопрос: как это происходит? Ядро уже исполнено. Как новый исполняемый файл подключается к работающему ядру? Спасибо.Как модуль ядра подключается к работающему ядру?

+0

Вы можете найти [эту справочную страницу] (http://man7.org/linux/man-pages/man2/init_module.2.html) некоторой помощи. –

ответ

3

модуль ядра действительно только объектный файл (или, другими словами, половина связана программа) с открытыми функциями.

modprobe использует специальный системный вызов для загрузки модуля в ядро. После этого ядро ​​имеет встроенный компоновщик, который завершает связывание объектного файла с запущенным ядром. Встроенный компоновщик заранее знает адреса всех функций ядра, поэтому он знает, как заполнять пробелы.

После этого ядро ​​переходит к точке входа модуля ядра, и модуль выполняет свою работу. С этого момента модуль в основном является частью ядра.

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