什么是模块?从代码的特征上来看,模块就是可完成一项独立功能的一组函数的集合。从使用特征上来看,它在被需要时可以随时被安装,而在不需要时又可以随时被卸载。总之,模块是一个为内核(从某种意义上来说,内核也是一个模块)或其他内核模块提供使用功能的代码块。
准确地说,模块就是一个已编译但未连接的可执行文件。
前面反复介绍Linux是一个一体化的内核,由于内核中的各部件联系紧密,因此这种内核最重要的特点就是运行效率较高。但也就是由于内核中各部件联系紧密,也给它带来了一个致命的缺点:当因某种原因需要增加、扩充时,用户必须对内核全部重新编译一次。所以,为了弥补这个缺点,Linux建立了模块机制。
从内核的角度来看,模块由在运行时可连接并删除的、包含了至少2个函数的代码段。这个代码段一旦被连接到内核,它就可以是内核的一部分,所以它也被叫做内核模块。
从用户的角度来看,模块是内核的一个外挂的配件:需要时可将其挂接到内核上,以完成用户昕要求的任务:不需要时即可将其删除。它给用户提供了扩充内核功能的手段。