0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于鸿蒙OS的微内核概念介绍

鸿蒙系统HarmonyOS 来源:CSDN博主 作者:icolakele 2021-03-23 14:51 次阅读

按照发布会的PPT来看,鸿蒙OS有三层架构,第一层是微内核,第二层是基础服务,第三层是程序框架。所谓的第二层基础服务应该就是那些从内核态空间移到用户态空间的基础服务程序。当然,也可能部分还是运行的内核态,更像是混合内核。

当下的鸿蒙OS依然是基于开源框架,只是关键模块自我研发,也就是说,和各大手机厂商使用Android开源系统实现各自的定制系统大概是一个意思。鸿蒙OS的愿景是2020年实现内核和应用框架自研,2021年实现软硬件协同优化。这里的软硬件协同优化,应该是要解决进程间通信(Inter-process communication, IPC)的性能问题,这个后面会详细说一下。

关于鸿蒙OS不过多评价,时间是检验真理的唯一标准。接下来主要聊一聊微内核的概念。

微内核(Microkernel or μ-kernel),这个概念其实是相对于宏内核(Monolithic kernel)而言的。

宏内核与微内核对比图

我们常说的Linux/UNIX就是基于宏内核的,内核提供了相当多的功能,包括驱动,调度器,地址空间管理,进程间通信,文件系统,虚拟文件系统,系统调用等,以Linux为例,其宏内核的代码量高达2700万行。

宏内核系统架构

而微内核仅提供调度器,地址空间管理以及进程间通信等最基础的功能,MINIX 3的微内核仅1.2万行代码。

微内核架构

宏内核与微内核代码量为什么会有这么大的区别呢?德国计算机科学家Jochen Liedtke提出的微内核最小化原则,简单的讲就是,宏内核所提供的所有功能,可以扔到用户态实现的,就一律扔到用户态,内核仅保留绝对必要的功能。这有点像奥卡姆剃刀原理,如非必须,勿增实体。也就是说,宏内核提供了大量的冗余功能,兼容了太多的硬件,代码量自然就大。而微内核甚至把硬件的驱动程序从内核剥离出去,使其运行在用户态。

早期的宏内核,其实很像我们今天所说的微内核。早期设备本身的内存空间有限,外设也极少,内核需要支持的特性也很有限。但是随着硬件的飞速发展,内核需要支持更多的特性和更多的外设,宏内核架构的复杂性和代码规模也就飞速增加起来了,内核程序间的耦合度也越来越大。当然,CPU速度的提升以及内存空间的增加,让我们基本上可以无视内核对性能的消耗。但是5G时代,一个万物互联(Internet of Things, IoT)的时代,将有更多的小型智能设备接入互联网,低功耗、低内存、安全性成为了新的要求,在这些设备上跑宏内核的系统绝对不是好的选择,由此,微内核的热度又起来了。

早在上个世纪八九十年代,微内核一度被炒的热火朝天。但是一直因为性能问题而没有得到广泛应用。直到今天,微内核在学界的热度也远超工业界。每一次发展微内核,都大致经历这样的过程:把内核的某些功能剥离出内核,然后爆发性能问题,然后再把一部分功能移回到内核。这样就出现了很多介于宏内核和微内核之间的内核形态,一般统称为混合内核。我们常见的Mac OS、Windows NT等用的就是这种混合内核的架构。

混合内核

近几年谷歌一直在研发Fuchsia系统,使用的Zircon内核,才算是真正意义上的微内核。

那么,微内核到底有什么优点呢?

分布式支持:微内核各模块采用IPC传递信息,对于IPC而言,无论是在本机,还是局域网或者广域网,只要赋予进程和设备唯一的标识符,微内核的设计几乎是天然支持分布式系统的。

模块化、低耦合:由于大部分服务程序被转移到用户态空间,系统就可以按需启动这些服务,按需接入外设。用户态的进程各自独立,系统耦合度大大降低。

组件故障不会导致系统重启,内核只需要重启故障组件就可以恢复正常,系统稳定性可以大大提高。熟悉Linux内核编程的人都知道,内核代码出问题,往往会导致整个系统崩溃。而用户态程序不仅不会导致系统崩溃,而且易于调试。

微内核系统功能升级也更容易,由于宏内核的很多功能都是运行在内核,跟随系统一起启动。虽然可以使用补丁实现故障修复和功能升级,但是依然有很多问题无法通过补丁解决,还是要依赖版本更换和重启整个系统。而微内核只需要替换相关组件,然后重启组件即可。

内核代码零缺陷:由于微内核代码量极少,可以从数学角度进行形式化验证,从而保证内核代码完全没有缺陷,也就是所谓的Bug free。但是这并不是说整个系统没有缺陷,系统本身还包括用户态的服务程序,说白了,只是把缺陷转移到相对安全的用户态罢了。

那为什么微内核直到今天也没广泛应用呢?

原因前面已经说了,微内核的低效率是硬伤。微内核依赖IPC实现通信,宏内核的IPC效率就很不尽人意,微内核则把IPC的低效率进一步放大了。相对而言,宏内核的文件系统,驱动等以线程的方式工作在内核空间,它们之间的通信可以都在内核完成,不需要上下文切换,可以直接访问共享资源,甚至可以直接相互调用接口达到通信的目的。而微内核则需要通过IPC通信,触发系统调用,内存拷贝(异步通信需要拷贝两次),运行上下文切换,阻塞进程,这些操作开销都很大。

Jochen Liedtke创造的L4 microkernel把IPC的系统开销降低了一个数量级。如何实现呢?

首先,直接弃用异步IPC,所有通信均使用同步的方式。

然后把通信数据尽可能直接使用寄存器传递(这个涉及CPU指令集,有机会再细说),这样可以减少数据拷贝、内存寻址、调度器切换运行上下文的开销。

最后为了解决同步通信造成进程阻塞的问题,引入了进程直接切换的概念,即当有数据发送时,当发送端发完数据时,直接将上下文切换到接收进程,迅速完成数据传递和接收。

除此之外,微内核效率差的另一个原因则是每指令的存储器周期比宏内核要长很多,这个就需要减少微内核的缓存工作集来解决问题了。

微内核效率差的原因除了IPC、指令存储周期长外,还有一个观念上的问题。华为鸿蒙OS的愿景是支持多终端,统一开发流程,也就是让一个微内核支持所有的应用场景。而提高微内核效率的一个解决方案却是,设计单一目的(Single-purpose)、专用的微内核。不知道华为鸿蒙OS是怎么解决这个问题的,还有点小期待呢。

编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微内核
    +关注

    关注

    0

    文章

    54

    浏览量

    13380
  • 鸿蒙系统
    +关注

    关注

    183

    文章

    2620

    浏览量

    65273
收藏 人收藏

    评论

    相关推荐

    华为鸿蒙—时代的开启者!

    `在开始之前先给大家介绍下华为鸿蒙吧,鸿蒙内核是基于内核
    发表于 09-03 11:19

    谷歌全新推出的Fuchsia OS,对鸿蒙有什么影响?

    诉讼。因此,谷歌加快研发Fuchsia OS,对于现在和未来,都有着重大的意义。谷歌全新推出的Fuchsia OS,则完全放弃了Linux内核,并且选择基于Zircon核打造,同时采
    发表于 09-08 16:12

    关于鸿蒙os的开源程度。 开源到什么程度,是100%开源吗?

    想了解下关于鸿蒙os的开源程度。 开源到什么程度,是100%开源吗?
    发表于 09-22 11:15

    鸿蒙OS与Fuchsia OS的异同

    `最近行业内最热门的,可能就是这个华为鸿蒙OS的第一次正式亮相了。作为知乎上Fuchsia OS的答主,自然也收到了大量的关于比较两个操作系统,或是评价
    发表于 09-23 11:42

    HarmonyOS鸿蒙操作系统之什么是“基于内核的全场景分布式操作系统”?

    HarmonyOS鸿蒙操作系统之什么是“基于内核的全场景分布式操作系统”?即使作为理工科的人咋一眼看上去似乎也不太懂这是什么,就像区块链这个概念刚出来一样,普通人都是一脸懵B(当然现
    发表于 09-23 17:06

    鸿蒙OS适用的全场景到底什么意思?

    鸿蒙系统(HarmonyOS),第一款基于内核的全场景分布式OS,是华为自主研发的操作系统。华为在开发者大会HDC.2019上正式发布了鸿蒙
    发表于 09-25 09:25

    鸿蒙介绍

    这份资料主要是对鸿蒙概念的扫盲,这里介绍鸿蒙的应用场景和技术框架,同时也有1000+页,非常详细的入门手册。这份资料具体的内容有:HarmonyOS快速入门手册2.0通用设计基础Ha
    发表于 11-24 10:49

    鸿蒙os系统是什么意思 鸿蒙os系统有什么作用

    大家都很熟悉华为,那么华为近年新研发出来的鸿蒙os系统是什么意思?下面与大家分享华为鸿蒙os系统是什么意思的教程。鸿蒙
    发表于 12-17 11:34

    鸿蒙OS优于安卓 未来将开源

    如约,在今天下午的HDC2019华为开发者大会上,余承东正式发布了鸿蒙操作系统——Harmony OS,基于微内核的全场景分布式OS
    的头像 发表于 08-09 17:30 2028次阅读

    华为为什么会在东莞发布鸿蒙OS?你怎么看?

    今日(9日),华为在东莞正式发布鸿蒙OS,这是全球目前最早的、基于微内核的全场景分布式OS之一!
    的头像 发表于 08-12 14:07 2686次阅读

    鸿蒙OS系统详解

    华为的鸿蒙OS是一款“面向未来”的操作系统,是基于微内核的全场景分布式OS,可按需扩展,实现更广泛的系统安全。目前主要用于智能物联网,今年将扩展到智能手机上
    的头像 发表于 11-12 11:24 1.2w次阅读

    鸿蒙OS千呼万唤始出来

    从2019年在华为开发者大会上公布鸿蒙OS开始,围绕着鸿蒙OS的话题始终没有停止过,而华为也坚持不懈地为鸿蒙
    的头像 发表于 06-01 15:56 2336次阅读

    鸿蒙os怎么升级

    6月2日,华为正式发布了鸿蒙armonyOS 2系统,那么鸿蒙os如何升级?现将鸿蒙os升级方式告知如下。
    的头像 发表于 06-08 16:26 2487次阅读

    华为系统openharmony 鸿蒙内核的理解

    鸿蒙OS分布式操作系统是一款基于微内核的全场景分布式OS,是华为自主研发的操作系统。
    的头像 发表于 06-23 10:48 3392次阅读

    鸿蒙OS和开源鸿蒙什么关系?

    开源鸿蒙(Open Harmony) 鸿蒙系统愿来的设计初衷,就是让所有设备都可以运行一个系统,但是每个设备的运算能力和功能都不同,所以内核的设计上,采用了微内核的设计,除了最基础的功
    的头像 发表于 01-30 15:44 384次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b>和开源<b class='flag-5'>鸿蒙</b>什么关系?