为什么微内核操作系统基本停留在教科书上
2020-12-30 本文已影响0人
天地会珠海分舵
os.png
这两天有网友提问说:
”为什么计算机有史以来的微内核操作系统基本都失败了,只有华为鸿蒙OS成功了?“
这里姑且先不论鸿蒙OS是否已经成功,因为这个我自己都认为颇具争议。我们先简要说下微内核为什么往往只停留在教科书中。比如我们大学的时候操作系统源码分析用的就是微内核的Minix。
我认为这里最重要的一个原因就是微内核效率的问题。按照微内核的设计,内核只负责最基本的cpu调度,内存管理,进程调度及IPC这些功能,像文件管理,设备驱动这些是不会编进内核的。
这样做的好处就是职责清晰,有点像设计模式中SRP单一职责原则,核心就做最基本的事情。但缺点也同样非常明显, 相比起把所有东西都打包在一起的宏内核,微内核中的一次用户空间的调用需要更多内核态和用户态的切换及IPC(进程间通信),从而导致性能更低下。
这就好比现在流行的微服务,你通过各个docker容器将不同功能模块分隔开,从而让各自的职责更清晰,更容易维护,出现问题也更容易隔离和定位。但是带来的问题就是你各个docker之间网络通信的延时。
所以说微内核往往只能停留在教科书中,因为其结构清晰,更容易理解和研究学习。而对于需要商业化的操作系统,更多会选择宏内核,因为要追求性能的极致,提升自己的竞争力。
而微服务为什么又能够风生水起呢?这个我觉得是得益于现在各种硬件和网络通信能力的增强,相对于微服务带来的上面说的职责分明,更容易隔离和定位问题,牵一发不至于动全身这些对稳定性至关重要的特性来说,牺牲那么一点点性能简直就不在话下了。
本文由朱佰添编写,喜欢的点个赞关注下。同时欢迎看下我最近发布的小程序三日清单