当前位置:   article > 正文

OS之宏内核(Monolithic kernel)和微内核(Microkernel)详解_微内核和宏内核

微内核和宏内核

内核介绍

Microkernel:在Microkernel中,大多数内核以特权状态作为独立的进程运行,它们通过消息传递进行通信。

在这些设计中,Microkernel部分通常只是一个消息转发站:当系统调用模块想要向文件系统模块发送消息时,该消息直接通过内核[1]转发。这种方法有助于实现模块之间的隔离。在一些微内核设计中,更多的功能(如I/O)也封装在内核中。但最基本的想法是保持Microkernel尽可能小,这样整个内核只能通过移植Microkernel本身移植到一个新的平台上。所有其他模块只依赖于Microkernel或其他模块,而不直接依赖于硬件[2]。

Microkernel设计的优点之一是,它可以更容易地用更有效的实现替换现有的文件系统模块,而不会影响系统的其他部分。当系统运行[3]时,我们甚至可以添加新的系统模块开发或模块需要直接和快速地替换现有模块到系统中。另一个优点是,不必要的模块不会加载到内存中,因此微内核可以更有效地使用内存。

在这里插入图片描述

From Wikipedia
https://zh.wikipedia.org/wiki/%E5%BE%AE%E5%85%A7%E6%A0%B8

Monolithic kernel(也叫 Macrokernel):一个单片内核是一个非常大的进程。他的内部可以分为几个模块(或层次或其他)。但当它运行时,它是一个大的二值图像。模块之间的通信是通过直接调用其他模块中的函数来实现的,而不是通过消息传输[4]来实现。

Monolithic kernel的支持者声称Microkernel的消息传递开销会导致效率的降低。微内核的支持者认为,内核设计增加的灵活性和可维护性可以弥补任何损失。

详细区别:

1.Macrokernel包含了几乎所有的函数,Microkernel只包含了一些

2.Macrokernel模块是高度依赖的。例如,如果Linux移除网络,就会导致问题。正是由于Macrokernel的这一缺陷,导致了一些问题:例如,为了加强安全模块,必须修改所有的模块。
Microkernel:内核模式只保留最基本的功能:cpu调度、内存管理和进程通信。将文件系统驱动器设备放在[5]之外。

3.Macrokernel的代码可以以百万计,而Microkernel的代码只能以数万或数十万计。代码量越大,错误就越多。

4.Microkernel操作系统:windows NT 7 8、minix、maxcOS、WindowsBarrelfish
 Macrokernel: linux unix

Minix Example

在Minix简单看一看微内核操作系统
以下是Minix 2.0.4版本ps ax命令的结果界面:
在这里插入图片描述
从上面的Wiki图标可以看出,文件系统和进程内存管理已经是系统独立进程的形式。我们可以在ps中看到FS和MM。

下图是Minix3,也是ps的返回结果:
在这里插入图片描述
可以看到,甚至系统进程也暴露在我们面前,FS变成了VFS,但本质是一样的,只是名称变了。

Minix参考https://mp.weixin.qq.com/s/MLCR7qqGFWyyP0KcZqW3Kw

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/324326
推荐阅读
相关标签
  

闽ICP备14008679号