(文章标题)

(副标题)

Posted by (作者名) on August 21, 2022

微内核与宏内核分析

要了解宏内核与微内核的区别,我们首先要知道什么是宏内核,什么是微内核。宏内核被视作为运行在单一地址空间的单一的进程,内核提供的所有服务,都以特权模式,在这个大型的内核地址空间中运作,这个地址空间被称为内核态,微内核(Micro kernel)是提供操作系统核心功能的内核的精简版本,它设计成在很小的内存空间内增加移植性,提供模块化设计,以使用户安装不同的接口。由此可以看出,宏内核与微内核最大的差异就在于设计思想的不同。

​ 宏内核的设计思想是把内核服务和用户服务集成到一个空间,它们都由内核来进行统一管理。宏内核也可以称作为单核或者单内核,而正是在这种高度集成的环境下,所有的服务都集中在一个空间,函数间的调用链路短,并且是直接通信,所以宏内核执行效率高。而微内核的设计思想却是将功能划分为独立的进程,进程之间通过 IPC 进行通信,高度模块化,一个服务的故障不会影响另一个服务。而正是这样的设计,让微内核的执行效率要低于宏内核,因为不同模块间的调用链路长,模块间相互调用的成本大。

​ 但微内核的优点在于可扩展性强,因为用户服务与内核服务相互隔离,在某些用户服务崩溃的情况下一般不会影响到内核数据与服务,同时也可以选择性的扩充用户服务。而在可扩展性方面宏内核的表现就比较差,同时宏内核因为较大的体积,在5G时代许多小型电子设备进入互联网后也比不如微内核的兼容性来的更好。

​ 从上面的分析,我们很容易从微内核和宏内核想到软件开发中的单体架构和微服务架构,单体架构最大的特点就是函数调用方便,几乎不存在调用链路,一个项目解决所有问题,项目中包含数据库驱动、各种拦截器、控制器、权限控制,可拓展性非常差。而微服务的架构之间的调用链路会比较长,模块之间的职责分离并且相互依赖,比如权限控制模块、路由模块、总线通信模块。可拓展性比较强。单体架构和微服务架构在软件开发根据需求的不同有着不同的应用场景,而微内核和宏内核也是如此,应对不同的需求,他们各种的优点可以被无限的放大,从而弥补。 但随着现代操作系统的不断发展,操作系统的内核的功能日趋复杂,微内核的优势也会不断被放大,最显著的就是Linux内核现在开始逐步对功能进行模块化、抽象、分层、层级等,以控制其不断增长的复杂度。在一个庞大的系统中即使出现一个微小的错误,也可能导致系统崩溃,这也给宏内核的安全性带来了许多潜在的威胁性。而微内核在执行效率的劣势也同样需要去弥补,需要将一些较为影响性能服务移入内核从而达到一种较为平衡的态,所以许多系统采用了混合内核的思想,结合微内核与宏内核的两者的优点,但混合内核本质还是属于微内核,只不过它的的组件更多的在核心态中运行,以获得更快的执行速度。

​ 因此,在5G为背景的互联网下,微内核的设计理念在一定程度上更符合时代发展的要求,而低耦合和高内聚带来的效率较低的问题,或许也能在后续的不断发展中不断提升。