为什么微内核操作系统基本停留在教科书上

看到知乎上有人问说:

为什么计算机有史以来的微内核操作系统基本都失败了,只有华为鸿蒙OS成功了?

这里我觉得我先回答一半吧,这里姑且先不论鸿蒙OS是否已经成功,因为这个我自己都认为颇具争议。我们先论微内核为什么往往只停留在教科书中。比如我们大学的时候操作系统源码分析用的就是微内核的Minix。

我认为这里最重要的一个原因就是微内核效率的问题。按照微内核的设计,内核只负责最基本的cpu调度,内存管理,进程调度及IPC这些功能,像文件管理,设备驱动这些是不会编进内核的。这样做的好处就是职责清晰,有点像编程模式中SRP单一职责原则,核心就做最基本的事情。但缺点也同样非常明显, 相比起把所有东西都打包在一起的宏内核,微内核中的一次用户空间的调用需要更多内核态和用户态的切换及IPC(进程间通信),从而导致性能更低下。

这就好比现在流行的微服务,你通过各个docker容器将不同功能模块分隔开,从而让各自的职责更清晰,更容易维护,出现问题也更容易隔离和定位。但是带来的问题就是你各个docker之间网络通信的延时。

所以说微内核往往只能停留在教科书中,因为其结构清晰,更容易理解和研究学习。而对于需要商业化的操作系统,更多会选择宏内核,因为要追求性能的极致,提升自己的竞争力。

而微服务为什么又能够风生水起呢?这个我觉得是得益于现在各种硬件和网络通信能力的增强,相对于微服务带来的上面说的职责分明,更容易隔离和定位问题,牵一发不至于动全身这些对稳定性至关重要的特性来说,牺牲那么一点点性能简直就不再话下了。

我的更多作品
[三日清单] - 把握今天,放眼未来
[好学街] - 记录学习点滴、分享才艺人生
[techgogogo] - 本站公众号、关注了不迷路