9.1 Linux 设备驱动程序 9.2 Linux经典Hello world驱动程序 9.3 Linux字符设备驱动程序实例
Linux内核模块
Linux操作系统的内核是单一体系结构(monolithic kernel)
有了模块机制后,提高Linux操作系统的可扩充性,内核编程不再是一个恶梦
什么是模块呢?
模块的全称是“动态可加载内核模块”(Loadable Kernel Module,LKM)
模块在内核空间运行
模块实际上是一种目标对象文件
没有链接,不能独立运行,但是其代码可以在运行时链接到系统中作为内核的一部分运行或从内核中取下,从而可以动态扩充内核的功能
这种目标代码通常由一组函数和数据结构组成
Linux内核模块的优点与缺点
优点
使得内核更加紧凑和灵活
修改内核时,不必全部重新编译整个内核。系统如果需要使用新模块,只要编译相应的模块,然后使用insmod将模块装载即可
模块的目标代码一旦被链接到内核,它的作用域和静态链接的内核目标代码完全等价
缺点
由于内核所占用的内存是不会被换出的,所以链接进内核的模块会给整个系统带来一定的性能和内存利用方面的损失;
装入内核的模块就成为内核的一部分,可以修改内核中的其他部分,因此,模块的使用不当会导致系统崩溃;
为了让内核模块能访问所有内核资源,内核必须维护符号表,并在装入和卸载模块时修改符号表;
模块会要求利用其它模块的功能,所以,内核要维护模块之间的依赖性..
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !