1 什么是内核模块?
内核模块是一种没有经过链接,不能独立运行的目标文件,是在内核空间中运行的程序。
经过链接装载到内核里面成为内核的一部分,可以访问内核的公用符号(函数和变量)。内
核模块可以让操作系统内核在需要时载入和执行,在不需要时由操作系统卸载。它们扩展
了操作系统内核的功能却不需要重新启动系统。如果没有内核模块,我们不得不一次又一
次重新编译生成单内核操作系统的内核镜像来加入新的功能。这还意味着一个臃肿的内
核。
2 内核模块是如何被调入内核工作的?
当操作系统内核需要的扩展功能不存在时,内核模块管理守护进程kmod执行modprobe
去加载内核模块。modprobe遍历文件/lib/modules/version/modules.dep来判断是否有其它内核模块需要在
该模块加载前被加载。最后modprobe调用insmod先加载被依赖的模块,然后加载该被内核要求的模块。
3 模块机制的优点:
减小内核映像尺寸,增加系统灵活性;
节省开发时间;修改内核,不必重新编译整个内核。
模块的目标代码一旦被链入内核,作用和静态链接的内核目标代码完全等价。
4 模块机制的缺点:
对系统性能有一定损失;
使用不当时会导致系统崩溃