说起module(模块),有的像「可热插拔的零部件」的意思。
在讨论Linux时提到的模块一般是指可以组装到内核中的模块。
模块这个概念是在硬件和程序设计领域中广泛使用的概念。我们这次说的模块特指Linux内核中的模块。
内核模块简单来说就是「作为内核程序主体的一个小配件来使用的程序」,也就是说,只有模块是什么也做不了的。安装到内核中才能起作用。
比如有一个新的设备或者一个新的功能想要追加到内核中时,就可以用模块的方式来实现。(设备驱动最好考虑用内核模块的方式来提供)
此时,如果把相应的模块直接放到内核本体中,这里不是以模块方式,而是直接把模块代码放到内核代码中。那么,因为不知道何时需要何种设备,所以要把很多的驱动程序代码加到内核代码中,
内核的代码量会变的非常庞大。不仅如此,内核的内存使用量会很大。而且但有新的设备发布的时候,需要把新设备的代码加入到内核中,然后再重新编译内核,这会花费很多的时间。
如果以「模块」方式来使用的话,那么只要将必要的设备以及功能的代码加入到内核中,内核会很紧凑。而且有新的设备或功能发布时,也不用重新编译内核。
这样看来,模块方式有很多优点,但也不是没有缺点的。
- 存在很多天生就无法用模块方式来实现的功能
- 用模块方式在某些场合会导致性能下降
管理内核模块的命令是 「modprobe」。这个命令可以用来加载模块。
模块之间有时会存在依赖关系,「modprobe」命令会在加载模块时检查模块的依赖关系,所以建议用「modprobe」命令来加载模块。