admin管理员组文章数量:1561027
作者:michalliu,腾讯 WXG 客户端开发工程师
华为鸿蒙OS有什么创新,是否自主研发完全开源,本文带你深入鸿蒙的世界。
一、初识鸿蒙
国内在计算机基础核心领域缺乏建树,一直没有自主知识产权的操作系统。之前又出过多起诸如汉芯,红芯浏览器等造假事件,犹如现实世界的“狼来了”,使国人对任何打着自主知识产权宣传的产品都会戴着放大镜去看,那么鸿蒙到底是不是个例外?
鸿蒙是个很泛的概念,鸿蒙不仅一个操作系统,还是一个生态。鸿蒙这个词在不同的场景下指代不同的东西。根据华为官方IDE DevEco Studio 的应用模板可以看出,目前鸿蒙支持的设备有手机,平板,电视,手表,汽车,以及相机等小家电等等,不同的技术栈开发的应用支持的设备种类也不同。其中Java类型的应用支持的设备类型最为丰富,JS类型的应用其次,C++应用支持的类型最少。
这些设备大体上可以分为嵌入式和非嵌入式两种。根据应用所需内存大小又可以分为L0-L5六个级别:
在嵌入式领域, 鸿蒙指是一款嵌入式操作系统,鸿蒙的核心为LiteOS,系统只能在配套的硬件(开发板)上运行,并非通用的操作系统,OpenHarmony是其对外开源的版本,在2020年9月在gitee上开源OpenHarmony 1.0,关于这款系统华为自身的文档比较欠缺,这里有较为详细的开发者文档。
在非嵌入式领域, 鸿蒙指的是一款叫鸿蒙的手机操作系统,最近网上热议的“此应用专为旧版鸿蒙打造”令人疑窦丛生。
因为截至目前鸿蒙只发布了一个版本,根本不存在所谓的旧版鸿蒙。由于鸿蒙的手机版操作系统并未开源,提示语又与android如此类似,不得不令人怀疑是字符串批量替换。那么事实真是字符串替换如此简单吗?下文将会予以分析。
总的来说,鸿蒙绝不仅仅指的是操作系统,华为的野心也绝不止于此,华为是要打造一个叫鸿蒙的生态,我们不排除未来会有鸿蒙SDK植入其它厂商的设备,使这些设备也具备运行鸿蒙应用的能力,甚至是运行在传统的Windows、Linux上的设备,那么这些设备也可以说是一个鸿蒙设备,是鸿蒙生态的一部分。
二、鸿蒙核心
经调研,我们认为鸿蒙生态的核心是以下四点:
1、多设备兼容
即开发出来的应用,可以覆盖多种类型的设备,屏蔽底层OS的差异,类似目前火热的Flutter所解决的问题。
2、卡片式应用
在多设备兼容的基础上带来一致的,高性能的交互体验。可以理解为跨设备,跨平台,跨网络的轻量Widget。
3、软总线
在以上两点的基础上,降低设备间互联互通的门槛。主要基于以下三点改进:
(1)设备间的发现和连接:从手动发现,进化成自发现:
(2)多设备互联后的组网技术:软总线组网-异构网络组网:
(3)多设备多协议间的高效传输技术:
4、通信安全
要实现设备间的互联互通,那么安全无疑是特别重要的环节。这里的问题是如何保证正确的人使用正确的设备,消费正确的数据。即要解决如下三个问题:
(1) 如何保证消费者对设备的鉴权是安全的,保证设备是原厂生产,没有被篡改的?(正确的设备)
(2) 如何保证消费者操作设备数据是安全的?(正确的人)
(3)如何保证消费者数据安全?(正确使用数据)
鸿蒙在系统和数据通信安全方面有较为完善的考虑。
三、系统层分析
基于鸿蒙已经开源的openharmony源码统计,openharmony包含C代码2KW行,C++ 500W行。
1、内核部分
鸿蒙宣传的微内核,并未说明是哪个鸿蒙,华为目前已经发布的内核包括:
1、Linux 面向手机 (L5级别设备)
2、LiteOS-a 面向有MMU的设备 (>=L1级别)
3、LiteOS-m 面向无MMU的嵌入式设备 (L0级别)
目前行业内对内核进行分类主要是:
微内核优点:
1、代码量小,可以形式化验证,可以减少bug量,几乎可以0 bug,另外更加方便移植。
2、各个系统组件或者服务如果存在问题可以直接重启服务,减少核心组件异常对整个系统的破坏,并按需组织系统服务。
3、各组件可以按需加载(现在宏内核也支持模块动态加载卸载)。
4、可以规避GPL协议。
微内核缺点:
1、所有资源获取都需要通过IPC,IPC又必须陷入内核,所以会导致频繁的陷入内核,或者多次拷贝,导致性能下降。当然IPC通信效率随着深入研究与技术发展逐步提高。
2、对于中断响应,需要映射到用户空间再处理,效率较低。
3、大量使用某些系统服务的时候,会导致进程上下文切换,增加系统负担。
而目前开源出来的鸿蒙代码 LiteOS-a按照业界对内核分类依旧是宏内核。至于华为是否存在微内核但没有开源,还是在实现鸿蒙过程中,又重新选择了宏内核,我们不得而知。
1.1 LiteOS-M
LiteOS-M和HW以前开源的Lite OS基本相同,进行部分结构性调整,当前只适用于cortex-m3、cortex-m4、cortex-m7、risc-v芯片架构,是纯粹的RTOS系统,通过KAL与上层服务匹配。
1.2 LiteOS-A
LiteOS-A是HW基于LiteOS进行演进的,进行 多进程,多核,虚拟内存,IPC等重新封装,尽量类似于Linux,但是尽量简化内核实现。OpenHarmony LiteOS-A内核架构图:
LiteOS-A是HW基于LiteOS进行演进的,进行 多进程,多核,虚拟内存,IPC等重新封装,尽量类似于Linux,但是尽量简化内核实现。
LiteOS-A相对于纯粹的RTOS增强关键特性简介:多进程: 基于task进行封装,较为简单的进程与线程调度(支持时间片和FIFO调度);
多核: 全局链表、所有CPU共享,支持空闲轮询调度(不支持负载均衡),可支持亲和设置,可绑定核运行。
虚拟内存:内核静态映射,静态映射提升虚实转换效率,最有区间分布(0-1G用户空间,1-4G内核空间,减少用户态进程页表项),用户态通过缺页异常按需获取内存。动态链接: 按需加载,多应用共享代码段,加载最小单元为页,符号绑定,支持立即和延时绑定,加载地址随机化,进程代码段,数据段,堆栈段地址随机化。并且运行标准ELF文件。
进程通信(IPC): 支持标准的posix进程间通信,如Mqueue,pipe,fifo.signal。同时添加了Lite IPC(类似与Android binder但是简单得多),ROM和RAM占用不超过30K,达到轻量,基于白名单控制的服务访问权限,提升安全,通过内存映射实现单次拷贝,实现高效。
系统调用: 通过MUSL实现系统调用支持syscall API和VDSO API。VDSO是减少系统调用开销的方式,Linux也支持。保证服务与内核分离。并且服务和应用不能随意访问内核。
权限管理: 进程粒度的权限划分与管理,完成DAC访问控制,以进程UID的配置,灵活划分文件资源归
版权声明:本文标题:不吹不擂,一文揭秘鸿蒙操作系统 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1727451871a1115295.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论