Linux内核模块了解知多少

如题所述

第1个回答  2017-04-07
(1)什么是Linux内核模块编辑本段  首先什么是内核模块呢?这对于初学者无非是个非常难以理解的概念。内核模块是Linux内核向外部提供的一个插口,其全称为动态可加载内核模块(Loadable Kernel Module,LKM),我们简称为模块。Linux内核之所以提供模块机制,是因为它本身是一个单内核(monolithic kernel)。单内核的最大优点是效率高,因为所有的内容都集成在一起,但其缺点是可扩展性和可维护性相对较差,模块机制就是为了弥补这一缺陷。模块是具有独立功能的程序,它可以被单独编译,但不能独立运行。它在运行时被链接到内核作为内核的一部分在内核空间运行,这与运行在用户空间的进程是不同的。模块通常由一组函数和数据结构组成,用来实现一种文件系统、一个驱动程序或其他内核上层的功能。总之,模块是一个为内核(从某种意义上来说,内核也是一个模块)或其他内核模块提供使用功能的代码块。(2)内核模块的优缺点编辑本段  利用内核模块的动态装载性具有如下优点:·将内核映象的尺寸保持在最小,并具有最大的灵活性;·便于检验新的内核代码,而不需重新编译内核并重新引导。但是,内核模块的引入也带来了如下问题:·对系统性能和内存利用有负面影响;·装入的内核模块和其他内核部分一样,具有相同的访问权限,因此,差的内核模块会导致系统崩溃;·为了使内核模块访问所有内核资源,内核必须维护符号表,并在装入和卸载模块时修改这些符号表;·有些模块要求利用其他模块的功能,因此,内核要维护模块之间的依赖性。·内核必须能够在卸载模块时通知模块,并且要释放分配给模块的内存和中断等资源;·内核版本和模块版本的不兼容,也可能导致系统崩溃,因此,严格的版本检查是必需的。尽管内核模块的引入同时也带来不少问题,但是模块机制确实是扩充内核功能一种行之有效的方法,也是在内核级进行编程的有效途径。希望对您有所帮助,望采纳,谢谢
相似回答