在鸿蒙 Show code 之前,先来看看什么是微内核
据华为官方消息,本月中,鸿蒙操作系统将正式发布 2.0 版本,届时还将把源码公开托管至代码平台。近一年多的犹抱琵琶半遮面,这次似乎是要“ Show us code”了,在一睹鸿蒙芳容之前,不妨让我们先来了解一下鸿蒙的核心要素之一 —— 微内核。
官方介绍,鸿蒙从设计之初就为多终端(如边缘计算 IoT、服务器等)而生,微内核就是鸿蒙操作系统的核心要素之一。
什么是微内核
微内核设计的基本思想是简化内核功能,在内核之外的用户态尽可能多地实现系统服务,同时加入相互之间的安全保护。内核只提供最基础的服务,比如多进程调度、多进程通信(IPC)等。其中进程通信是作为连接应用与用户态系统服务的桥梁。
宏内核系统相关的服务基本都是放于内核态内核中,例如文件系统、设备驱动、虚拟内存管理、网络协议栈等;而微内核则把更多的系统服务(例如文件系统、POSIX服务、网络协议栈甚至外设驱动)放到用户态应用,形成一个个服务,等待其他应用的请求。而后来,为了在宏内核与微内核之间扬长避短,也发展出了中间的混合内核的形态,部分服务也会放置于内核中。
微内核的优缺点
技术没有银弹,微内核也有优缺点。
优点
- 系统服务模块化,可移植性高;
- 内核安全性提高(模块内部的bug不影响内核稳定,将黑客利用软件漏洞造成的破坏限制在单个模块内部);
- 可以多套系统服务共存,相当于同时运行多种操作系统;
- 稳定统一的接口(可以独立维护私有驱动以及服务,不需要跟内核源码绑定);
- 在商业上,微内核可以避免代码受到一些开源协议的影响,比如GPL协议;
- 内核精简,可以进行形式化验证,利用数学证明内核的安全性;
- 数学可证明的实时性;
- 非常适合多处理器系统设计,在多处理器核心计算机上,互相依赖的系统服务可以同时运行
缺点
- 通过进程通信的方式交换数据或者调用系统服务,而不是使用系统调用,造成额外的操作系统开销;
- 使用一些频繁使用的系统服务时,比如网络收发数据,造成的进程上下文切换对操作系统来说也是一个负担;
- 由于系统服务高度模块化,系统服务之间存在大量的内存复制;
- 对互相之间存在复杂调用关系的系统服务,难以设计通信接口;
- 系统服务与内核在地址空间上分离,造成代码局部性差,降低了cache命中率;
微内核项目:Minix 与 Fuchsia 的 zircon
在鸿蒙之前,已经存在一些使用微内核技术的项目。常常被人们拿来与鸿蒙对比的 Fuchsia 同样采用微内核设计。Fuchsia 是 Google 开发的一款全新操作系统,设计目标是覆盖手机、平板甚至笔记本等一系列终端。Google 为该系统准备了丰富的配套生态,包括 Vulkan 图形接口、3D 桌面渲染 Scenic、Flutter 应用开发框架,还有一个称为 zircon 的微内核。
zircon 内核是从高通平台的一个 Bootloader 项目:Little Kernel 发展而来。zircon 内核属于微内核设计,只提供 IPC,进程管理,地址空间管理功能。zircon 区别于以进程或者以文件为核心的设计,zircon 是以内存为核心来设计的,内存在 zircon 中是以对象的方式存在,可以通过channel 通信机制传递虚拟内存对象(Virtual memory object)的句柄,进程拿到句柄后可以把这块内存映射到自己的空间。
此外,CPU 制造商 Intel 近年来也在推进微内核技术,在管理引擎中加入了 Minix 微内核系统。Minix 系统由荷兰阿姆斯特丹 Vrije 大学的 Andrew S.Tanenbaum 教授开发,该系统最大的特点是可以故障隔离,自动重启失败的服务。
Minix 使用分层设计,最底层的微内核提供中断处理、进程管理、进程通信等服务,这一层运行在内核态;中间层提供轮回服务(Reincarnation Server)、文件服务、进程管理、X 图形服务以及驱动等,这一层运行在用户态;最上层为用户进程。其中轮回服务负责在中间层的服务出现崩溃时重启这些服务,从而保证服务的自我修复。正是由于 Minix 具有自我修复的特性,才被 Intel 管理引擎(ME)所选用,该管理引擎主要负责管理 Intel 芯片的内部模块。
鸿蒙微内核
根据官方资料显示,鸿蒙微内核从底层即为物联网设计。微内核仅在操作系统的内核中保留最基本功能,降低了内核的开发难度;分布式思维,将非核心的程序和模块隔离在内核之外,因此当单一程序出现错误时不会影响系统整体功能;同时,微内核相比宏内核更易于移植,开发、更新周期也得以缩短。
上述可知,微内核的最大特性是仅在内核中保留最核心功能,是鸿蒙实现跨端操作系统的不二之选。微内核连接实时性更好,同时结合 5G 低时延场景,尤其适用于工业控制、智能交通等物联网领域。而在这些场景下,微内核更容易实现故障隔离,最大程度保证系统的可用性与安全性。
鸿蒙微内核具有分布式的特点。目前已有操作系统基本只对应于某一种硬件,如 Windows 对应 x86 PC、iOS 对应苹果移动设备等。但 IoT 时代终端种类数量极大拓展,难以针对每种硬件分别开发操作系统或应用程序,不同硬件终端的生态无法共享协同,开发效率低。基于微内核的鸿蒙一旦实现硬件解耦,就可以针对不同设备进行弹性部署(例如手机、电脑、穿戴设备、车载设备、音箱、电视、智能家居等)。
微内核是 IoT 操作系统演进方向,也是鸿蒙系统的核心要素之一。据官方透露,鸿蒙微内核对进程间通信进行了高度优化,使得鸿蒙相比 Fuchisia 效率提升 3 至 5 倍。此外,由于微内核的代码数量远远少于宏内核,因此鸿蒙能够以对每行代码进行充分的“形式化”的安全验证,显著提升内核安全性。
当然,鸿蒙的微内核究竟是否如其宣传的那样,一切还要等到这次的华为开发者大会后才能揭晓答案。希望这次鸿蒙能够真正的“ Show us code”。
参考链接:
http://www.itpub.net/2019/07/19/2461/

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【万字长文】深入理解 Typescript 高级用法
点击上方“前端技术砖家”关注 ❝ 「前言」:这里的标题看起来是 "高级用法",不少同学可能就表示被劝退了。其实 Typescript 作为一门 强类型 编程语言,最具特色的就是他的类型表达能力,这是很多完备的后端语言都难以媲美的 说的很对,但PHP是最好的语言,所以如果你搞懂了他的类型系统,对将来的日常开发一定是大有裨益的,但过于灵活的类型系统也注定了 Typescript 无法成为一门纯粹的静态语言,不过每一行代码都有代码提示他不香嘛? ❞ 大纲 基础准备 Typescript 类型系统简述 Typescript 的类型是支持定义 "函数定义" 的 Typescript 的类型是支持 "条件判断" 的 Typescript 的类型是支持 "数据结构" 的 Typescript 的类型是支持 "作用域" 的 Typescript 的类型是支持 "递归" 的 小结 "高级用法" 的使用场景与价值 哪些用法可以被称为 "高级用法" 举例说明 "高级用法" 的使用场景 小结 类型推导与泛型操作符 流动的类型(类型编写思路) Typescript 代码哲学 常见类型推导实现逻辑梳理 类型的传递...
- 下一篇
Linux Kernel 5.9-rc4 发布
Linux Kernel 5.9-rc4 已发布。Linus 在发布公告指出,rc4 填补了 rc3 中遗漏的内容,所以它的改动比平均水平大了一点,不过都在正常范围内。此版本提供了与网络相关的程序的修复,以及对其他驱动程序(sound, nvme, gpu, iommu, mmc 等)和文件系统的改进(btrfs, afs, affs(!) 和xfs),还有架构、文档和工具方面的更新。 Linus 还说道,rc4 大部分的改动都不是很大,不过在 diffstat 中有几个值得关注的改动,包括 intel pstate cpufreq driver、mac802.11 数据率和 xen 内存分配助手。 因为 AMD 的下一代 GPU 将于今年晚些时候发布,Linux Kernel 5.9 还加入了对 AMD Sienna Cichlid 和 Navy Flounder 的支持。 Linux Kernel 5.9 其他值得关注的变化: 支持FSGSBASE AMD Zen CPU 启用 P2PDMA(peer-to-peer direct memory access) 支持英特尔 Rock...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2全家桶,快速入门学习开发网站教程
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8编译安装MySQL8.0.19
- Docker安装Oracle12C,快速搭建Oracle学习环境