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

本文探讨了微内核(Microkernel)与宏内核(Monolithic Kernel)两种操作系统内核设计,比较了它们的模块化特性、通信方式、优点与局限性,并以Minix为例展示了微内核的实际应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内核介绍

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值