华为开发者大会上正式宣布了鸿蒙操作系统,该系统其中一个亮点是 —— 微内核。华为声称,微内核的启用,使其速度大大提升,并且在安全性上产生变革性突破,微内核打破了宏内核下root即可获取用户所有权限的做法,在安全性上大大提升。
我们先来搞清楚什么是微内核呢
微内核结构由一个非常简单的硬件抽象层和一组比较关键的原语或系统调用组成;这些原语,仅仅包括了建立一个系统必需的几个部分;如线程管理,地址空间和进程间通信等。
微核的目标是将系统服务的实现和系统的基本操作规则分离开来。例如,进程的输入/输出锁定服务可以由运行在微核之外的一个服务组件来提供。这些非常模块化的用户态服务器用于完成操作系统中比较高级的操作,这样的设计使内核中最内核的部分的设计更简单。一个服务组件的失效并不会导致整个系统的崩溃,内核需要做的,仅仅是重新启动这个组件,而不必影响其它的部分。
微内核将许多OS服务放入分离的进程,如文件系统,设备驱动程序,而进程通过消息传递调用OS服务。
第一代微内核,在内核提供了较多的服务,因此被称为'胖微内核',它的典型代表是MACH,它既是GNU HURD也是APPLE SERVER OS 的内核,可以说,蒸蒸日上。
第二代微内核,只提供最基本的OS服务,典型的OS是QNX,QNX在理论界很有名,被认为是一种先进的OS.
但是微内核有利有弊:
微内核的优点
系统服务模块化,可移植性高;
内核安全性提高(模块内部的 Bug 不影响内核稳定,将黑客利用软件漏洞造成的破坏限制在单个模块内部);
可以多套系统服务共存,相当于同时运行多种操作系统;
稳定统一的接口(可以独立维护私有驱动以及服务,不需要跟内核源码绑定);
在商业上,微内核可以避免代码受到一些开源协议的影响,比如 GPL 协议;
内核精简,可以进行形式化验证,利用数学证明内核的安全性;
数学可证明的实时性;
非常适合多处理器系统设计,在多处理器核心计算机上,互相依赖的系统服务可以同时运行;
微内核的缺点
通过进程通信的方式交换数据或者调用系统服务,而不是使用系统调用,造成额外的操作系统开销;
使用一些频繁使用的系统服务时,比如网络收发数据,造成的进程上下文切换对操作系统来说也是一个负担;
由于系统服务高度模块化,系统服务之间存在大量的内存复制;
对互相之间存在复杂调用关系的系统服务,难以设计通信接口;
系统服务与内核在地址空间上分离,造成代码局部性差,降低了 cache 命中率。
华为宣布其鸿蒙操作系统采用微内核架构(micro-kernel )。微内核是操作系统内部架构的一种形式,要把最重要最基本的管理工作交给微内核,以保证安全,兼容性和速度。
微内核不是新的系统架构,从诞生到发展已经有几代了,但是在很成功的商用系统里应用还没有,当然还有宏内核以及混合内核等!
操作系统总体架构(Architectures)是操作系统内部管理和运行的总体组织形式,就像政府或大公司的组织架构类似。比如说公司设有董事会、监事会、CEO、VP、CFO、各种部门,分公司,子公司等。
最初的操作系统的功能主要是管理好系统资源CPU、RAM、ROM、I/O,以及应用程序等。
以PC为例,做早诞生的DOS最为典型,就是一个单用户系统(一次只能运行一个应用程序),后来发展成为多用户系统WINDOWS,原始的系统架构就是提供几个简单的输出输入功能,简单实用,但是其缺陷也是明显的,比如:
1,系统崩溃(蓝屏)
2,安全漏洞
3,不兼容基于其他操作系统的应用程序
4,物联(新增)
5,5G通讯(控制和实时性)
6,其他需求
在保持原有的总体架构不变的条件下继续升级是不划算的,所以微软不再升级WINDOES操作系统了。必须根据与日俱增的外部需求重新规划全新的架构(Architectures)。
据称鸿蒙系统采用了微内核的总体架构,在安全、速度、多终端、全场景、共享生态诸方面都实线了设计目标,比谷歌的系统(Fuchsia)更优秀!