我正在学习设备驱动程序。到目前为止,我已经执行了小模块。我想知道 linux 如何允许在运行时插入模块?我搜索了一下,但不满意或者可能无法理解。我得到的只是 linux 守护进程执行 modprobe 添加新模块。但我的问题是这是怎么发生的?内核已经在执行中。新的可执行文件如何附加到正在运行的内核? 谢谢。
最佳答案
内核模块实际上只是一个具有公开功能的目标文件(或者换句话说,半链接程序)。
modprobe
使用特殊的系统调用将模块加载到内核中。之后,内核有一个内置的链接器,完成将目标文件链接到正在运行的内核。内置链接器预先知道所有内核函数的地址,因此它知道如何填充空白。
之后,内核跳转到内核模块的入口点,模块开始工作。从此以后,模块基本上就是内核的一部分。
关于linux - 内核模块如何附加到正在运行的内核?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21754059/