当前位置: 技术问答>linux和unix
模块如何被内核调用的?
来源: 互联网 发布时间:2016-08-19
本文导语: 比如我写了个一个修改系统调用的模块 然后通过insmod加载到内核中 内核会被它放在哪儿呢? 我在应用层调用该系统调用,为什么内核会先找到该模块,而不是原来的内核代码? 请高手指点这其中的流程。 | ...
比如我写了个一个修改系统调用的模块 然后通过insmod加载到内核中
内核会被它放在哪儿呢?
我在应用层调用该系统调用,为什么内核会先找到该模块,而不是原来的内核代码?
请高手指点这其中的流程。
内核会被它放在哪儿呢?
我在应用层调用该系统调用,为什么内核会先找到该模块,而不是原来的内核代码?
请高手指点这其中的流程。
|
我的见解:驱动模块被加载后,在linux看来就是一个文件,之后在应用层调用驱动程序就是在操作相应的文件。你什么时候操作这个文件就什么时候调用这个模块。
|
比如我写了个一个修改系统调用的模块 然后通过insmod加载到内核中
内核会被它放在哪儿呢?
当然放在内核空间里,常驻内存。
我在应用层调用该系统调用,为什么内核会先找到该模块,而不是原来的内核代码?
请高手指点这其中的流程。
你的内核模块输出了一些函数接口,这些输出函数接口的地址在内核里有一个表保存它。至于先调内核代码还是先调你的模块代码,取决于你的业务需求,或者讲逻辑实现。
另外,内核模块,可以是驱动程序,可以是一个简单的功能函数,也可以是一个空的,什么都不做。
内核会被它放在哪儿呢?
当然放在内核空间里,常驻内存。
我在应用层调用该系统调用,为什么内核会先找到该模块,而不是原来的内核代码?
请高手指点这其中的流程。
你的内核模块输出了一些函数接口,这些输出函数接口的地址在内核里有一个表保存它。至于先调内核代码还是先调你的模块代码,取决于你的业务需求,或者讲逻辑实现。
另外,内核模块,可以是驱动程序,可以是一个简单的功能函数,也可以是一个空的,什么都不做。
|
我写了个一个修改系统调用的模块 然后通过insmod加载到内核中
----------------------------
你这种情况不是典型的驱动,属于基本的hook 系统调用的黑客方式
----------------------------
你这种情况不是典型的驱动,属于基本的hook 系统调用的黑客方式
|
补充下这个观点,若是字符设备或者块设备驱动程序,此观点正确。