鸿蒙操作系统用的微内核到底是什么?


鸿蒙操作系统用的微内核到底是什么?

文章插图
 
作者 | RT-Thread
责编 | 伍杏玲
【CSDN 编者按】Android/ target=_blank class=infotextkey>安卓系统是宏内核,而最近热议的华为鸿蒙操作系统是微内核 。什么是微内核?微内核是如何发展?其优缺点是什么呢?一起来看看吧 。
鸿蒙操作系统用的微内核到底是什么?

文章插图
 
背景庞大的 UNIX 家族
计算机技术在二战后快速发展,构成计算机的主要基本单元从电子管发展到分立晶体管,再到后来的大规模集成电路 。随着计算机技术发展,计算机性能越来越强劲,硬件越来越复杂,人们发现很难去直接管理计算机了,于是人们开始设计软件用于管理越来越复杂的计算机系统,这些软件称作系统级软件 。
从最开始的批处理系统,多道程序系统,分时系统到上世纪 60 年代开始出现通用操作系统,计算机系统层出不穷,直到上世纪 70 年代才出现被大家广泛接受广泛使用的通用操作系统 。其中最经典的当然就是 UNIX 系统了 。
UNIX 系统,1971 年诞生于大名鼎鼎的贝尔实验室的一台 PDP-11/24 机器上,其后经过不断发展与传播,在 80 年代取得了巨大成功,UNIX 被移植到众多的处理器架构,并在众多行业得到广泛使用,甚至成为行业标准影响至今 。
鸿蒙操作系统用的微内核到底是什么?

文章插图
 
UNIX 以及类 UNIX 系统如 linux 都是典型的宏内核设计,也就是把所有系统服务都放到内核里,因为系统服务代码之间存在大量数据交换和大量的服务请求,而在同一个代码段内进行函数调用(C 语言)或跳转(汇编或者机器码时代)是最直接、最高效的方法,在同一片地址空间也方便数据交换,所以这样的宏内核设计是很自然的 。
但是随着 UNIX 内核功能的拓展(文件系统、TCP/IP网络协议栈、进程管理、内存管理、驱动程序等),UNIX 内核代码也相应增加了很多,进而在可维护性、稳定性、安全性方面面临一些挑战 。为了试图解决这些挑战,人们开始尝试使用微内核的思想来设计系统内核 。
鸿蒙操作系统用的微内核到底是什么?

文章插图
 
什么是微内核?
微内核设计的基本思想是简化内核功能,在内核之外的用户态尽可能多地实现系统服务,同时加入相互之间的安全保护 。内核只提供最基础的服务,比如多进程调度、多进程通信(IPC)等 。其中进程通信是作为连接应用与用户态系统服务的桥梁 。
鸿蒙操作系统用的微内核到底是什么?

文章插图
 
宏内核与微内核的对比示意图
宏内核系统相关的服务基本都是放于内核态内核中,例如文件系统、设备驱动、虚拟内存管理、网络协议栈等;而微内核则把更多的系统服务(例如文件系统、POSIX 服务、网络协议栈甚至外设驱动)放到用户态应用,形成一个个服务,等待其他应用的请求 。而后来,为了在宏内核与微内核之间扬长避短,也发展出了中间的混合内核的形态,部分服务也会放置于内核中 。
鸿蒙操作系统用的微内核到底是什么?

文章插图
 
微内核的发展历史
微内核这个概念从提出开始就在不断地发展、完善进步之中,到目前为止可以分为三代 。
第一代微内核:从无到有
第一代微内核的主要代表是 mach,该系统由美国卡耐基梅隆大学的 Avie Tevanian 和 Richard Rashid 主导开发 。在 Mach 刚刚开始设计时,UNIX 的发展正如日中天,所以Mach在设计时的一大目标就是兼容 UNIX,但是与 UNIX 不同的是 Mach 尝试使用微内核架构去设计 。Mach 以 IPC 是作为所有系统服务与内核交换数据的基础机制,充分运用 IPC、虚拟内存、多进程等特性将冗余的系统服务移出内核作为进程运行 。
1986年,经过两年的开发,第一版的 Mach 发布后的第二年,Mach 就发布了第2版,不过由于时间仓促,加之没有足够的人手与资金,所以此时 Mach 内核并不提供完全的系统服务 。
为了支撑系统上层运行,这一版的内核包含了大量 4.3 版本的 BSD 系统(UNIX的一个分支)代码提供系统服务,并且 BSD 系统服务运行在内核状态,这导致 Mach 内核的代码体积甚至大于常规 UNIX 内核 。
第一版和第二版的 Mach 主要做了如下工作:
1. 验证了微内核的可行性;
2. 在多处理器计算机上进行移植验证了微内核在多处理器计算机上的运行;


推荐阅读