
·将内核映象的尺寸保持在最小,并具有最大的灵活性;
·便于检验新的内核代码,而不需重新编译内核并重新引导。
但是,内核模块的引入也带来了如下问题:
·对系统性能和内存利用有负面影响;
·装入的内核模块和其他内核部分一样,具有相同的访问权限,因此,差的内核模块会导致系统崩溃;
·为了使内核模块访问所有内核资源,内核必须维护符号表,并在装入和卸载模块时修改这些符号表;
·有些模块要求利用其他模块的功能,因此,内核要维护模块之间的依赖性。
·内核必须能够在卸载模块时通知模块,并且要释放分配给模块的内存和中断等资源;
·内核版本和模块版本的不兼容,也可能导致系统崩溃,因此,严格的版本检查是必需的。
尽管内核模块的引入同时也带来不少问题,但是模块机制确实是扩充内核功能一种行之有效的方法,也是在内核级进行编程的有效途径。
Linux 仅仅是内核。Linux *** 作系统一般指的是 Linux 内核 + 其他软件。所以内核模块,不用说了,就是 Linux 内核的可重载模块。模块化设计什么意思不用说了。
Linux 源代码要特指,一般说 Linux 源代码应该是说 Linux 内核源代码。也就是内核的最核心代码+外围模块的源代码。(注意模块是可以独立开发,独立存在的。但内核模块必须被内核载入后才能工作。)
所以一个 Linux 系统是没办法分多少内核模块的,内核模块是可以变的。
内核模块既可以随时用随载入,不用了就卸载,也可以直接就放到内核中(也就是直接编译到内核里面)。可以说内核模块主要就是驱动,驱动是运行在内核层面的程序。不同的计算机需要不同的驱动,不同的 Linux 内核版本,自带的驱动也是有很大区别的。
Linux 系统是由各种各样的“软件包”(或者叫组件)组成的,而不是内核模块组成的。因为 Linux 系统是 Linux 内核 + 其他软件。内核模块只是 Linux 内核部分的东西。其他软件包括各种函数库,各种应用程序,还有用户界面接口等等。
如果《 *** 作系统原理》明白了,Linux 还是很好理解的。
如果只用 Windows ,是不能理解系统分层的,因为你用 Windows ,只见过他的 GUI ,而没见过其他的部分。比如 Windows 的 NT 内核是什么东东,DirectX 11 算什么,IE 是什么层级。
启动头,内存管理,调度管理等是不可缺的。简单的讲:可以缺少的是驱动部分。实际上linux基本把能用到的驱动都集中起来了(各个厂家的)。大部分电脑只能用到其中一部分
我们实际裁剪内核,主要是调整参数,以及根据机器上的硬件裁剪硬件驱动。所以上面都有用,除了驱动部分包含大量的你机器上没有的驱动。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)