更新时间:2023-11-21 00:37
module: [ 'mɔdju:l ]
1.[计算机] 模块
n. 组件
2. 单元【课程学习单元】
a module in mathematics数学课的一个单元
3.宇宙飞船的分离舱
1. In software engineering, an individual unit or module that is utilized by higher-level programs or modules.
在软件工程中,指较高一级程序或模块使用的一个单元或模块。
2. Object repository support for creating shared, reusable form and data module.
用于创建共享、可重用窗体和数据模块的对象储存库支持。
3. The definition of a global symbol that is not explicitly available for reference by modules linked with the module in which the definition occurs.
一种全局符号定义,它不能被与定义该全局符号的模块相链接的其它模块直接引用。
4. My desk is my command module.
我的书桌就是我的主要工作场所。
名词module:
1. one of the inherent cognitive or perceptual powers of the mind
2. detachable compartment of a spacecraft
3. computer circuit consisting of an assembly of electronic components (as of computer hardware)
4. a self-contained component (unit or item) that is used in combination with other components
Linux modules是linux 2.0版本以后都支持模块化,因为内核中的一部分常驻在内存中,(如最常使用的进程,如scheduler等),但是其它的进程只是在需要的时候才被载入。如MS-DOS文件系统只有当mount此类系统的时候才需要,这种按需加载,就是模块。它能使内核保持较小的体积,虽然可以把所有的东东都放在内核中,这样的话,我们就不需要模块了,但是这样通常是有特殊的用途(所有要运行的进程都预先知道的情况)。
模块另一个优点是内核可以动态的加载、卸载它们(或者自动地由kerneld守护程序完成)。
Writing, Installing, and Removing Modules
WRiting Modules:
除了它们运行在内核空间中之外,模块与其它程序类似。所以,必须定义MODULE并且包含头文件module.h以及其它的一些内核头文件。模块即可以很简单也可以很复杂。
一般的模块格式如下:
注意并不是所有内核中的变量都被导出供模块使用的,即使代码中用extern声明了。在/proc/ksyms文件或者程序ksyms中显示了被导出的符号。linux内核使用使用EXPORT_SYMBOL(x)宏来不仅导出符号,而且也导出版本号(version number)。如果是用户自己定义的变量,使用EXPORT_SYMBOL_NOVERS(x)宏。否则的话linker不会在kernel symbol table中保留此变量。可以使用EXPORT_NO_SYMBOLS宏不导出变量,缺省情况是模块导出所有的变量。
必须是超级用户才可以的。使用insmod来安装一个模块:
rmmod命令移除一个已经安装了的模块,以及任何此模块所导出的引用。
使用lsmod列出所有安装了的模块。
Example:
simple_module.c