分享更有价值
被信任是一种快乐

linux中引入模块机制的好处是什么

文章页正文上

本文小编为大家详细介绍“linux中引入模块机制的好处是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“linux中引入模块机制的好处是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 linux中引入模块机制的好处:1、应用程序在退出时,可以不管资源的释放或者其他的清除工作,但是模块的退出函数却必须仔细此撤销初始化函数所作的一切;2、该机制有助于缩短模块的开发周期,即注册和卸载都很灵活方便。首先,模块是预先注册自己以便服务于将来的某个请求,然后他的初始化函数就立即结束。换句话说,模块初始化函数的任务就是为以后调用函数预先作准备。好处:1) 应用程序在退出时,可以不管资源的释放或者其他的清除工作,但是模块的退出函数却必须仔细此撤销初始化函数所作的一切。2) 该机制有助于缩短模块的开发周期。即:注册和卸载都很灵活方便。Linux允许用户通过插入模块,实现干预内免费云主机、域名核的目的。一直以来,对linux的模块机制都不够清晰,因此本文对内核模块的加载机制进行简单地分析。模块的Hello World!我们通过创建一个简单的模块进行测试。首先是源文件main.c和Makefile。florian@florian-pc:~/module$ cat main.c其中init为模块入口函数,在模块加载时被调用执行,exit为模块出口函数,在模块卸载被调用执行。florian@florian-pc:~/module$ cat Makefile其中,obj-m指定了目标文件的名称,文件名需要和源文件名相同(扩展名除外),以便于make自动推导。然后使用make命令编译模块,得到模块文件main.ko。florian@florian-pc:~/module$ make使用insmod和rmmod命令对模块进行加载和卸载操作,并使用dmesg打印内核日志。通过内核日志信息,可以看出模块的入口函数和出口函数都被正确调用执行。模块文件使用readelf命令查看一下模块文件main.ko的信息。florian@florian-pc:~/module$ readelf -h main.ko我们发现main.ko的文件类型为可重定位目标文件,这和一般的目标文件格式没有任何区别。我们知道,目标文件是不能直接执行的,它需要经过链接器的地址空间分配、符号解析和重定位的过程,转化为可执行文件才能执行。那么,内核将main.ko加载后,是否对其进行了链接呢?模块数据结构首先,我们了解一下模块的内核数据结构。linux3.5.2/kernel/module.h:220模块数据结构的init和exit函数指针记录了我们定义的模块入口函数和出口函数。模块加载模块加载由内核的系统调用init_module完成。linux3.5.2/kernel/module.c:3009系统调用init_module由SYSCALL_DEFINE3(init_module…)实现,其中有两个关键的函数调用。load_module用于模块加载,do_one_initcall用于回调模块的init函数。函数load_module的实现为。linux3.5.2/kernel/module.c:2864函数load_module内有四个关键的函数调用。copy_and_check将模块从用户空间拷贝到内核空间,layout_and_allocate为模块进行地址空间分配,simplify_symbols为模块进行符号解析,apply_relocations为模块进行重定位。由此可见,模块加载时,内核为模块文件main.ko进行了链接的过程!至于函数do_one_initcall的实现就比较简单了。linux3.5.2/kernel/init.c:673即调用了模块的入口函数init。模块卸载模块卸载由内核的系统调用delete_module完成。linux3.5.2/kernel/module.c:768通过回调exit完成模块的出口函数功能,最后调用free_module将模块卸载。读到这里,这篇“linux中引入模块机制的好处是什么”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注云技术行业资讯频道。

相关推荐: linux如何查询软件包的信息

这篇文章主要讲解了“linux如何查询软件包的信息”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux如何查询软件包的信息”吧! linux查询软件包信息的方法:1、使用RPM命令,可查询RPM软件包的相关…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册