快捷搜索: 王者荣耀 脱发

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

内核介绍

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

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

From Wikipedia

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参考

经验分享 程序员 微信小程序 职场和发展