加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 移动互联 > 评测 > 正文

华为“鸿蒙”所涉及的微内核到底是什么?一文带你认识微内核

发布时间:2019-06-28 19:18:23 所属栏目:评测 来源:4d44f50c张
导读:副标题#e# 有消息宣称,华为的鸿蒙系统搭载的内核和安卓的完全不一样,安卓使用的是宏内核,而华为使用的则是另外一款全新的构架微内核,这款内核将会让系统的应用程序都单独运行不会互相打扰影响,而且其优点还不仅于此。而且谷歌也拥有微内核新星 Google
副标题[/!--empirenews.page--]

有消息宣称,华为的鸿蒙系统搭载的内核和安卓的完全不一样,安卓使用的是宏内核,而华为使用的则是另外一款全新的构架微内核,这款内核将会让系统的应用程序都单独运行不会互相打扰影响,而且其优点还不仅于此。而且谷歌也拥有微内核新星 Google Fuchisa。那么,微内核究竟是什么呢?这里让我们一起来认识下微内核吧。

华为“鸿蒙”所涉及的微内核到底是什么?一文带你认识微内核

背景 & 庞大的 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.在多处理器计算机上进行移植验证了微内核在多处理器计算机上的运行;3.最后为了提高 IPC 的效率,Mach 使用共享内存机制来完成 IPC。而 Mach 的共享内存机制是在虚拟内存技术的支持下实现的,只有需要对内存进行写入时才进行复制。这么一处理比每次都复制一遍内存节省了内存使用同时又加快了 IPC 机制的处理时间,这个改进称为写时复制,并且在如今的通用操作系统如 Linux 中常常用到。

经过测试,Mach 2.5 的效率最多比 UNIX 少 25%,但是考虑到 Mach 带来的可靠性、可拓展性、安全性,这个效率损失尚可以接受。当然此时 Mach 内核还不算完全的微内核。而考虑到微内核可以更高效地利用多处理器计算机的处理器核心资源,人们期待着等 Mach 把系统服务都搬到内核之外后可以把运行效率损失降下来。同时 Mach 在微内核方面小小的尝试迅速吸引了大批公司与组织的注意,开放软件基金会(Open Software Foundation, OSF)宣布下一代系统 OSF/1 将基于 Mach 的内核, NeXTSTEP 也将使用 Mach2.5, 甚至IBM也打算利用 Mach 构建 Workplace OS。苹果公司这个时候也出手了,苹果公司也从此基于 Mach2.5 打造其操作系统内核 XNU,XNU 的构成如下图所示,Mach 作为内核的内环,外环右侧是苹果的驱动框架(I/O Kit),外环左侧是 BSD 的系统服务代码提供 UNIX 兼容的服务层,这三者共同协作向上层提供完整的系统服务。XNU 广泛地使用在苹果公司的 OSX,IOS 等系统中。

华为“鸿蒙”所涉及的微内核到底是什么?一文带你认识微内核

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读