9 月 10 日,在华为开发者大会 2020 上,华为消费者业务 CEO 余承东宣布推出鸿蒙 OS 2.0 版本(HarmonyOS 2.0),同时将鸿蒙 OS 的代码捐赠给开放原子开源基金会进行开源孵化。根据华为公布的鸿蒙开源路标,即日起鸿蒙面向大屏、手表、车机等 128KB-128MB 终端设备开源;2021 年 4 月,面向内存 128MB-4GB 终端设备开源;2021 年 10 月,将面向 4GB 以上所有设备开源。

鸿蒙 OS 开源项目: OPENATOMOPENATOM

鸿蒙 OS 代码仓库: 「链接」

本文将进一步介绍鸿蒙 OS 的轻量级内核,包括其设计理念、做了哪些优化以及关键特性。本文由 InfoQ 整理自华为开发者大会 2020 技术论坛演讲《HarmonyOS 内核设计》,由华为消费者业务 OS 平台资深专家王米虎分享,内容未经本人确认。

HarmonyOS 轻量内核设计理念

华为很早就推出了面向物联网领域开发的轻量级操作系统 LiteOS,这个系统可以很好地支撑小芯片,但是要支撑更多复杂的上层应用框架和服务,还需要对其内核做大量的改进。

纵观 IoT 产品的发展趋势,硬件能力变得越来越强大,功能也越来越丰富。早前的 IoT 硬件功能比较简单,只需要跑在 M 核上,再加一些简单的协议就可以了,内核大小通常只有几十 KB 级别;后面出现了摄像头等新设备,需要跑在 A 核处理器上,支持少量 AI 功能,内核之上的组件越来越丰富;到近几年,很多设备都配备有屏幕,给系统内核带来了比较大的需求改变,只有内核已经无法满足需求,上面还需要有应用、UI、图形界面、多媒体。在这种挑战下,内核应该怎么做?

目前业界 IoT 设备有几种比较典型的解决方案。在资源受限的场景下,一般采用的是 RTOS 方案,好处是内存占用小、启动速度快、实时性高;但缺点也很明显,首先 RTOS 系统生态不够完善,驱动核第三方库比较复杂,移植工作量很大,另外,RTOS 应用和内核不能隔离,都在统一的内存地址空间,应用代码引起的系统异常会挂死在内核,导致应用开发和产品开发无法解耦。如果基于 RTOS 方案开发 Harmony OS 的内核,上述问题都会给研发团队带来比较大的困难,并且也提高了支撑解决方案的技术人员的技术门槛。

业界另一个解决方案是基于 Linux 的方案,优点是驱动和三方库生态软件完善,移植适配也比较容易,而且应用与内核隔离,应用可以在自身独立空间中运行,确保不同应用间安全、稳定,可支撑复杂交互体验设备开发;缺点是内存占用大、启动速度慢、实时性偏弱。

而华为 Harmony OS 的轻量内核设计目标是要同时实现类 Linux 的开发体验和 RTOS 的运行效果,主要从以下三个维度来做:

首先在上层增加了 POSIX 标准库,支撑比较丰富的 API(目前已经支持 1000 多个 POSIX 接口),以使生态软件可以比较方便地移植到 Harmony OS 上;其次是内核机制增强,增加了多进程、虚拟内存,希望生态应用能够跟内核区分开来,应用挂掉之后只会挂在它的用户态,而不会影响其他应用,也会相对安全,后来又增加了动态链接,开发者拿到对应的编译工具链之后就可以在 Linux 上编译出标准的 ELF 文件,然后直接在 Harmony OS 上运行,给开发体验带来了很大的差异;最后是底层设计了 HDF 统一驱动框架,以实现一次开发跨设备、跨系统驱动共享。

HarmonyOS 轻量内核关键特性

多进程

从系统的角度看,进程是资源管理单元。OpenHarmony 内核的进程模块可以给用户提供多个进程,实现进程之间的切换和通信,帮助用户管理业务程序流程。这样用户可以将更多的精力投入到业务功能的实现中。

OpenHarmony 内核中的进程采用抢占式调度机制,支持时间片轮转调度方式和 FIFO 调度机制。OpenHarmony 内核的进程一共有 32 个优先级(0-31),用户进程可配置的优先级有 22 个(10-31),最高优先级为 10,最低优先级为 31。高优先级的进程可抢占低优先级进程,低优先级进程必须在高优先级进程阻塞或结束后才能得到调度。每一个用户态进程均拥有自己独立的进程空间,相互之间不可见,实现进程间隔离。用户态根进程 Init 由内核态创建,其它用户态进程均由 Init 进程 fork 而来。

多核

目前 Harmony OS 在支持多核的同时也支持把任务分发到不同 CPU 上面去,不过还没有做很复杂的负载均衡,因为在 IoT 设备上目前看不是很有必要,后面可以再做扩展。

虚拟内存

虚拟内存主要是为了配合多进程来做到应用之间的隔离,支持用户态内存通过缺页异常按需分配。物理内存采用的是经典的管理方式,内核态地址空间是 1-4G,用户态内核空间是 0-1G,从而减少用户态进程页表项。内核采用静态映射,提升虚实转化效率。

动态链接

Harmony OS 的动态链接特征包括:

  • 按需加载:多应用共享代码段,加载最小单元为页;
  • 符号绑定:支持立即和延迟绑定;
  • 加载地址随机化:进程代码段、数据段、堆栈段地址随机化。

权限管理

Harmony OS 为 IoT 设备引入了一个比较轻量级的权限管理,做到了进程级别的权限控制,只有授权的进程才可以访问系统资源。Disc 方面引入了用户组的概念,可以根据进程 uid 的配置灵活划分文件资源归属和管控。

文件系统

Harmony OS 文件系统采用的是目前业界比较通用的实现方式。

更多鸿蒙 OS 开发者文档,详见:
「链接」

关注我并转发此篇文章,私信我“领取资料”,即可免费获得InfoQ价值4999元迷你书,点击文末「了解更多」,即可移步InfoQ官网,获取最新资讯~

windows 内核进程的优先级_华为鸿蒙 OS 轻量内核设计理念与关键特性相关推荐

  1. 华为新系统鸿蒙有哪些手机_华为鸿蒙OS系统传来新消息!外媒宣布:未来几年内华为手机都将无缘...

    导语:看科技资讯,品鉴最新最全的科技新闻,了解当今科技发展水平.点击关注微信公众号:"数码科技大爆炸",每天最新最全的科技资讯,轻松放松,更多好看科技资讯尽在这里,还不快来点击关注 ...

  2. 华为手机承载系统在哪里_华为鸿蒙OS系统取得重大突破!华为手机新系统真的来了:兼容安卓10...

    导语:看科技资讯,品鉴最新最全的科技新闻,了解当今科技发展水平.点击关注微信公众号:"数码科技大爆炸",每天最新最全的科技资讯,轻松放松,更多好看科技资讯尽在这里,还不快来点击关注 ...

  3. 华为鸿蒙手机系统什么时候开始更新_华为鸿蒙OS适配计划曝光,一起看看你的手机什么时候可以升级...

    原标题:华为鸿蒙OS适配计划曝光,一起看看你的手机什么时候可以升级 根据之前曝光的消息,鸿蒙 OS 2.0 系统将于2020 年 12 月份推出手机方面 的Beta 版本,从2021年开始全面支持手机 ...

  4. 鸿蒙系统适配机型_华为鸿蒙 OS 适配机型曝光,除了 Mate 40 还有这几款!

    点击蓝字 哎咆科技 关注我们 就在上个月的 HDC2020 上,华为发布了鸿蒙 2.0 操作系统,同时也公开了鸿蒙系统登陆手机的具体时间. 大概在明年年初会跟大家见面. 而就在近日,有博主曝光了鸿蒙系 ...

  5. 华为鸿蒙系统操作教程_华为鸿蒙OS 2.0还原EMUI11稳定版教程

    千呼万唤始出来,手机版的鸿蒙OS系统终于出来了! 不过目前还是Beta测试版,而且因为刚刚面世,还有诸多不成熟的地方,可以尝鲜但不适合日常使用. 如果你升级到了鸿蒙OS Beta又反悔了,华为官方也提 ...

  6. 华为手机升级回退_华为鸿蒙OS 2.0手机开发者Beta版支持Mate 30/P40系列OTA升级

    华为在今天( 12 月 16 日)举行 HarmonyOS 2.0 手机开发者 Beta 活动.现场正式发布了 HarmonyOS 2.0 手机开发者 Beta 版本.同时,HarmonyOS 2.0 ...

  7. 华为手机什么时候更新鸿蒙系统_华为鸿蒙OS即将迎来升级 手机版本或仍需时间...

    新浪科技 张俊 在2019年的华为开发者大会上,华为消费者业务CEO余承东正式对外发布了HarmonyOS.时隔一年后,华为开发者大会2020即将拉开帷幕.此次大会,HarmonyOS无疑仍会是重头戏 ...

  8. 雨林木风系统md5值_除了华为鸿蒙OS系统以外!都还有哪些国产操作系统:好用又美观呢?...

    导语:看科技资讯,品鉴最新最全的科技新闻,了解当今科技发展水平.点击关注微信公众号:"数码科技大爆炸",每天最新最全的科技资讯,轻松放松,更多好看科技资讯尽在这里,还不快来点击关注 ...

  9. 鸿蒙os能运行win软件吗,暂无在Windows、Linux、Android下运行华为鸿蒙OS的模拟器

    在网络上有人开发出了Flmage,用它可以模拟运行谷歌的Fuchsia OS,然后有人想是不是也有同样的工具能够运行华为鸿蒙OS(HarmonyOS).可惜的是,在Windows.Linux.Andr ...

  10. HarmonyOS什么时候上微内核,华为鸿蒙OS什么时候发售_华为鸿蒙harmonyOS上市时间_3DM手游...

    华为鸿蒙OS什么时候发售呢?华为正式发布鸿蒙,今天,华为开发者大会在广东东莞举行.会议期间,华为将发布荣耀智慧屏.升级版麒麟芯片等新产品技术!不知道的小伙伴就一起来看看吧. 华为正式发布鸿蒙是怎么回事 ...

最新文章

  1. 短视频个性化Push工程精进之路
  2. centos linux分区,人文网-Linux CentOS 系统分区方法
  3. C#多线程编程实战1.1创建线程
  4. tcp/ip 建立过程
  5. ubuntu12.04升级后找不到共享目录
  6. Android控件之ConstraintLayout详解
  7. 从考研说起:大学、职场、个人选择
  8. 网易云信SDK V3.1.0版本发布啦
  9. vs如何写多线程_java中的多线程的示例
  10. python字符串怎么表示_python中字符串的几种表达方式(用什么方式表示字符串)...
  11. 计算机基础知识试卷并附答案,计算机基础知识_试卷及答案.doc
  12. css自己做条纹背景,用css实现条纹背景
  13. Java之棋牌游戏——编写一个斗地主洗牌发牌的程序,要求按照斗地主的规则完成洗牌发牌的过程
  14. linux虚拟磁带机管理,linux虚拟磁带机
  15. Windows服务器双网卡冲突
  16. 怎么彻底卸载cad2017_电脑中cad卸载不干净重装失败的处理方法
  17. QQ动态表情包如何制作, 制作软件哪个好
  18. 2285列车时刻表_火车票查询j2285时刻表
  19. OpenGL配置glut64位和glut32位,英伟达 安全 下载地址 免费
  20. word如何关闭批注模式【教程】

热门文章

  1. 算法笔记_面试题_15.回溯算法模板及示例
  2. 深度学习笔记_基本概念_卷积网络中的通道channel、特征图feature map、过滤器filter和卷积核kernel
  3. Curve Modeling:车道线检测新工作(CVPR2022)
  4. Hadoop学习笔记—6.Hadoop Eclipse插件的使用
  5. 类方法实现:用python实现一个简单的单词本,添加/查找/删除单词。
  6. 总算完成了第一个项目,宿管系统,和感想
  7. (转)FTP操作类,从FTP下载文件
  8. 马踏飞燕——奔跑在Docker上的Spark
  9. Openstack 笔记概要
  10. 每个字符旋转随机角度的图象验证码 V2.0