【20141022】linux内核模块

【20141022】linux内核模块

ID:40759441

大小:27.56 KB

页数:11页

时间:2019-08-07

【20141022】linux内核模块_第1页
【20141022】linux内核模块_第2页
【20141022】linux内核模块_第3页
【20141022】linux内核模块_第4页
【20141022】linux内核模块_第5页
资源描述:

《【20141022】linux内核模块》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Linux内核模块2009-12-1811:22:23分类:嵌入式模块(module)是在内核空间运行的程序,实际上是一种目标对象文件,没有链接,不能独立运行,但是可以装载到系统中作为内核的一部分运行,从而可以动态扩充内核的功能。模块最主要的用处就是用来实现设备驱动程序。使用模块的优点:1,将来修改内核时,不必全部重新编译整个内核,可节省不少时间2,系统中如果需要使用新模块,不必重新编译内核,只要插入相应的模块即可模块的使用方式:(modules-1.3.57.tar.gz)命令功能备注modprobesymboliclinkto

2、modprobedepmodmakemoduledependencyfile,以告诉将来的insmod要去哪抓modules来插。这个dependencyfile就在/lib/modules/[您的kernel版本]/modules.depinsmod把某个module插入kernel中rmmod把某个没在用的module拔出kernelsymboliclinktoinsmodlsmod把现在kernel中插入的modules列出来ashellscriptin1.3.69fksymssymboliclinktoinsmodkern

3、eld一个daemon,可负责自动呼叫insmod插入module,是一个很方便的daemon。它也同时查看,若某module插入後但很久没人在用了,就会把它拔出来,以省记忆体。相关文件:/etc/rc.d/rc.modules/etc/rc.d/rc.Sor/etc/rc.d/rc.syinit/etc/conf.modulesor/etc/modules.conf模块的装载/卸载:静态:在系统启动时就装载动态:使用insmod等命令在系统运行过程中装载注:1.现在kerneld已经被kmod所取代,原因主要是kerneld是使

4、用SystemVIPC,经过了中间层,比较复杂。2.需要超级用户权限。3.形式:Module:#pages:Usedby:msdos51vfat41(autoclean)fat6[vfatmsdos]2(autoclean)工作原理摘要:*内核符号表*模块装载*模块卸载*多个模块间的依赖关系。Kernel里有一个变量叫module_list,每当user将一个module载到kernel里的时候,这个module就会被记录在module_list里面。当kernel要使用到这个module提供的function时,它就会去sear

5、ch这个list,找到module,然后再使用其提供的function或variable。每一个module都可以export一些function或变量来让别人使用。除此之外,module也可以使用已经载到kernel里的module提供的function。这种情形叫做modulestack。比方说,moduleA用到moduleB的东西,那在加载moduleA之前必须要先加载moduleB。否则moduleA会无法加载。除了module会export东西之外,kernel本身也会export一些function或variable

6、。同样的,module也可以使用kernel所export出来的东西。由于大家平时都是撰写userspace的程序,所以,当突然去写module的时候,会把平时写程序用的function拿到module里使用。像是printf之类的东西。我要告诉各位的是,module所使用的function或variable,要嘛就是自己写在module里,要嘛就是别的module提供的,再不就是kernel所提供的。你不能使用一般libc或glibc所提供的function。像printf之类的东西。这一点可能是各位要多小心的地方。(也许你可以

7、先link好,再载到kernel,我好象试过,但是忘了)。Linux核心是一种monolithic类型的内核,即单一的大程序,核心中所有的功能部件都可以对其全部内部数据结构和例程进行访问。核心的另外一种形式是微内核结构,此时核心的所有功能部件都被拆成独立部分,这些部分之间通过严格的通讯机制进行联系。这样通过配置进程将新部件加入核心的方式非常耗时。比如说我们想为一个NCR810SCSI卡配置SCSI驱动,但是核心中没有这个部分。那么我们必须重新配置并重构核心。Linux可以让我们可以随意动态的加载与卸载操作系统部件。Linux模块就

8、是这样一种可在系统启动后的任何时候动态连入核心的代码块。当我们不再需要它时又可以将它从核心中卸载并删除。Linux模块多指设备驱动、伪设备驱动,如网络设备和文件系统。Linux为我们提供了两个命令:使用insmod来显式加载核心模块,使用rmmod

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。