经典书籍翻译——深入理解Linux内核24

内核架构
如前所述,大多数Unix内核是宏模式:每个内核层集成到整个内核程序中并且以内核态运行当前进程。相反的,微内核操作系统需要内核中很少的函数集,通常包括一些同步元语,一个普通的调度器和一个进程间通信机制。有些运行在微内核之上的系统进程实现了其他的操作系统层的功能,比如内存分配、设备驱动以及系统调用处理程序。
尽管建立在操作系统之上的学术研究是面向微内核的,这样的操作系统通常比宏内核的运行速度较慢——因为不同操作系统层之间民缺的消息传递产生了额外的消耗,但是微内核操作系统比宏内核操作系统可能具有理论上的优势。微内核迫使系统程序员采用模块化的方式,因为每个操作系统层都是一个相对独立的程序,必须通过定义良好且干净的软件接口来实现不同层次之间的交互。此外,现有的微内核操作系统可以非常容易地移植到其他架构中,因为所有独立于硬件的部件通常都被封装在微内核代码中。最后,微内核操作系统比宏内核操作系统更能发挥RAM的优势,因为没有实现必须功能的系统进程有可能被替换或者废弃。
为了在不引入性能缺陷的情况下充分发挥理论优势,Linux引入了模块的概念;一个模块就是一个对象文件,该代码可以在运行时链接到内核(或者从内核中取消链接)。这些文件代码通常包括能够实现文件系统、设备驱动和内核上层的其他特性的函数集合。这里的“模块”和微内核操作系统的外部层级不同,不会作为一个特定进程运行。相反,模块在内核态代表当前进程运行,就像其他任何静态链接的内核函数一样。
运用模块的主要优势包括:
模块化方法
因为任何模块都能够在运行时链接/去链接,系统程序员必须引入定义良好的软件接口来访问模块处理的数据结构。这种设计思路使得开发新模块变得简单。
平台独立性
尽管模块有可能会依赖某些特定的硬件特性,模块却不限定于一个固定的硬件平台。比如,硬盘驱动模块在IBM兼容机PC上依赖SCSI标准而在HP的Alpha机器中同样依赖该标准。
节省内存使用
模块可以在需要的时候链接到运行的内核中,同样当该模块不在需要的时候取消链接;这对于小型嵌入式系统时非常管用的。
无性能缺陷
一旦被链接到内核中,该模块的对象代码就等同于将对象代码静态链接到内核;因此,当该模块的函数被调用时不需要显式的消息传递。

猜你喜欢

转载自blog.csdn.net/m0_37546257/article/details/121459491