电子说
简介
华为鸿蒙系统是一款全新的面向全场景的分布式操作系统,创造一个超级虚拟终端互联的世界,将人、设备、场景有机地联系在一起,将消费者在全场景生活中接触的多种智能终端,实现极速发现、极速连接、硬件互助、资源共享,用合适的设备提供场景体验。
1.1 抽象的艺术
华为的消费者业务很强大,个人消费品注重品控,这恰恰是华为的优势,华为设备的稳定性和对需求响应速度都是很好的,这也适合做个人消费品,可以这么说帖上华为的标签,价钱就能涨一点。
但是各种设备,这里可以统称为AIOT物联网设备,里面运行的程序千奇百怪,维护成本很高,这么多设备,里面如果有软件共性的东西抽取出来一个核心,把这个核心做好,那么这些设备就不容易出问题,还容易维护,关键还能相互通信,因为有了共同的基础OS。那么这个核心就是“微内核”LiteOS,把最基础OS的组件放入LiteOS,大家共用,这其实是软件领域一种“抽象”的概念。
计算机科学中遇到的所有问题都可通过增加一层抽象来解决。
抽象的优点在于它让上层以较小的代价获得所需的功能,并同时可以提供一些保护。但抽象同时也是一种限制,会丧失一些应有的灵活性。
比如,当你在考虑在项目中应该使用哪个函数库的时候,就常常需要这方面的权衡:过多的抽象和过少的抽象自然都是不合适的。理解应用的需求也很重要。
一个能合理满足应用需求的操作系统设计是操作系统设计者需要深入考虑的问题。这也是一种权衡,过多的服务功能和过少的服务功能自然都是不合适的。实际上,我们通过应用程序的特征和需求来判断操作系统需要什么程度的抽象和功能。
软件抽象的直接结果就是导致“模块化”和“分层”,从软件框架图里面可以看出来:
LiteOS的特点:轻量级(内核小于10k)、低功耗(1节5号电池最多可以工作5年)。鸿蒙系统可以覆盖所有的设备,应用在智能设备上,比如摄像头、门铃、体温计等设备。利用软总线将各个设备连接起来。
1.2 万法归一
上面说了抽象出微内核,这还远远不够,不仅底层代码可以复用,野心更大一点上层代码也可以在不同产品上复用,真正的“一为万物,万物归一”,修成武林至高秘籍,站在软件的最高峰。主要由以下概括:
统一OS,弹性部署 一套操作系统,满足大大小小所有设备的需求,小到耳机,大到车机,智慧屏,手机等,让不同设备使用同一语言无缝沟通。
硬件互助,资源共享 搭载HarmonyOS 的每个设备都不是孤立的,在系统层让多终端融为一体,成为“超级终端”,终端之间能力互助共享,带来无缝协同体验。
一次开发,多端部署 开发者基于分布式应用框架,写一次逻辑代码,就可以部署在多种终端上。
应用自由跨端 HarmonyOS 原子化服务是轻量化服务的新物种,它提供了全新的服务和交互方式,可分可合,可流转,支持免安装等特性,能够让应用化繁为简,让服务触手可及。
用“简单”激活你的设备智能 HarmonyOS 是新一代智能终端操作系统。为不同设备的智能化、互联与协同提供了统一的语言。设备可实现一碰入网,无屏变有屏,操作可视化,一键直达原厂服务等全新功能。通过简单而智能的服务,实现设备智能化产业升级。
这种大一统的思想,怎么感觉这么熟悉,好像就是中国人骨子里面的“大一统”,我们要搞中央集权,要集中力量办大事,不允许分裂,吸纳包容扩大自己,看来中国人也善于干这个事情。。。
1.3 分层诞生了软总线
华为提出了“分布式软总线”,是不是觉得这个名字很高大上,事实证明一个高大上的名字非常的重要,特别是需要对外宣传的东西,或者是一个老的技术在一个新领域的应用,足可以用高大上的名字去新的领域忽悠一波。分布式软总线的实质就是“通信”,其实就是一个通信协议,但是名字叫“XXX协议”,那不是烂大街了,你说很牛逼,原来就个这玩意,都没人信。
不同设备间的通信,最常见的就是OSI七层协议模型,学过《计算机网络》的都清楚。这里出现了一个不按套路出牌的,基于万物互联的需求,觉得七层太复杂了,需要简化,直接砍掉三层七层变四层,然后改进下适应自己的需求,也算是创新,如下图:
全场景设备间可以基于软总线完成设备虚拟化、跨设备服务调用、多屏协同、文件分享等分布式业务。分布式软总线的典型特征:
自动发现/即连即用
高带宽
低时延
高可靠
开放/标准
将中间的四层协议栈精简为一层提升有效载荷,有效传输带宽提升20%。极简协议在传统网络协议的基础上进行增强:
流式传输:基于UDP实现数据的保序和可靠传输;
双轮驱动:颠覆传统TCP每包确认机制;
不惧网损:摒弃传统滑动窗口机制,丢包快速恢复,避免阻塞;
不惧抖动:智能感知网络变化,自适应流量控制和拥塞控制;
总结下,就是参考《计算机组成原理》里面硬件总线的概念,受到启发,然后把《计算机网络》里面的七层模型改四层用起来,最后再根据业务需求做一些修正,满足不同的需求。看着好像简单,其实从技术创新角度已经算挺大创新了,特别是能工程应用。最近看马斯克吐槽发论文大多没用,能工程实践特别是利用基础理论,才是一种更有益的创新吧。
1.4 软件框架介绍
上面放过这个图,解释鸿蒙的特性。下面具体看下: 内核层 内核子系统:采用多内核(Linux内核或者LiteOS)设计,支持针对不同资源受限设备选用适合的OS内核。内核抽象层(KAL,KernelAbstract Layer)通过屏蔽多内核差异,对上层提供基础的内核能力,包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等。
驱动子系统:驱动框架(HDF)是系统硬件生态开放的基础,提供统一外设访问能力和驱动开发、管理框架。
系统服务层
系统服务层是OpenHarmony的核心能力集合,通过框架层对应用程序提供服务。该层包含以下几个部分: 系统基本能力子系统集:为分布式应用在多设备上的运行、调度、迁移等操作提供了基础能力,由分布式软总线、分布式数据管理、分布式任务调度、公共基础库、多模输入、图形、安全、AI等子系统组成。
基础软件服务子系统集:提供公共的、通用的软件服务,由事件通知、电话、多媒体、DFX(Design For X) 等子系统组成。
增强软件服务子系统集:提供针对不同设备的、差异化的能力增强型软件服务,由智慧屏专有业务、穿戴专有业务、IoT专有业务等子系统组成。
硬件服务子系统集:提供硬件服务,由位置服务、用户IAM、穿戴专有硬件服务、IoT专有硬件服务等子系统组成。
根据不同设备形态的部署环境,基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集内部可以按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。
框架层
框架层为应用开发提供了C/C++/JS等多语言的用户程序框架和Ability框架,适用于JS语言的ArkUI框架,以及各种软硬件服务对外开放的多语言框架API。根据系统的组件化裁剪程度,设备支持的API也会有所不同。
应用层
应用层包括系统应用和第三方非系统应用。应用由一个或多个FA(Feature Ability)或PA(ParticleAbility)组成。其中,FA有UI界面,提供与用户交互的能力;而PA无UI界面,提供后台运行任务的能力以及统一的数据访问抽象。基于FA/PA开发的应用,能够实现特定的业务功能,支持跨设备调度与分发,为用户提供一致、高效的应用体验。
1.5 鸿蒙微内核LiteOS介绍
上面是HuaweiLiteOS架构框图,操作系统是一个大的概念,其中包含了内核,鸿蒙的内核就是LiteOS,但是内核有时也单独叫一个操作系统,大家知道就可以。LiteOS基础内核:包括不可裁剪的极小内核和可裁剪的其他模块。极小内核包含任务管理、内存管理、中断管理、异常管理和系统时钟。可裁剪的模块包括信号量、互斥锁、队列管理、事件管理、软件定时器等。
对于微内核,由于用MMU(内存管理单元)对进程空间(内存区域)做了隔离保护,没有授权的进程是无法访问其他进程的空间。这就阻止了恶意程序对其他进程数据的窃取。在微内核的管理下,因为MMU的封锁过于严格,用户进程要存储一个东西,必须请求内核,使用内核的IPC进行进程间的通信。
Linux是宏内核,大量数据处理是通过系统调用这个问题不突出,但是微内核的IPC实在是“伤不起”,就这样微内核一直被Linux这种宏内核吊打。学界想了很多办法,L4提出了一个Fast IPC的办法,只要你IPC通讯没数据,可以借用CPU核心寄存器的办法传递消息,速度大大加快。也有人想到了dIPC, directIPC。
用标签内存的办法进行隔离,传递数据,无需通过内核空间。大大加快了通讯速度。但标签内存不符合现在计算机体系的架构,实践中,采用的可能性较小。
上交的陈海波教授团队,19年想了两个办法进行IPC的加速。一个是XPC,一个是Skybridge。其中XPC是硬件,增加了一点点CPU硬件修改,使得IPC通讯无需内核的参与,也无需数据拷贝;Skybridge,采用的是双内核,一个RootKernel,类似type-1的虚化,专门负责IPC数据通讯,上层的Kernel为微内核。这样IPC绕过了MMU 机制,也不会对微内核之上的MMU保护机制产生破坏。在IPC通讯的时候,无内核参与,无需拷贝。
再来看看Android的架构。Android因为采用了非常多的服务,不同于普通的应用,非常依赖于IPC通讯。为了提高速度,开发出了 IPC Binder Drivers 来加速 Linux下的IPC通讯。但效果不是太理想。XPC对BinderIPC的加速有50多倍。
SkyBridge和dIPC处于同一性能级别,XPC则更高。从论文上看,SkyBridge更实用一些,未来XPC还需要继续依赖于硬件的革新。
1.6 风口汽车上的鸿蒙应用
按照之前说的万物归一,那华为拿“鸿蒙”这大杀器,哪里有风口,就往哪里用啊。特别是汽车,简直太适合“鸿蒙”系统了,可以说比手机都适合。
车机鸿蒙 OS 对生态端和硬件端均实现极为强劲的支持。
1)鸿蒙 OS 车机系统在生态 上可以对接华为原生应用和应用商城,对车企支持仪表应用、OEM 应用等;
2)鸿蒙 OS 车机系统可以支持一芯多屏、多并发、分布式外设、车载网络&多部件协同等特性。
鸿蒙 OS 基于微内核,兼具 QNX 和Android 的优点,尤其国内华为服务支持在后端生 态适配上更有优势。QNX 是最为老牌的车载操作系统,作为微内核系统,QNX 提供较高的安全性、稳定性和实时性,但对生态支持较差。Andorid 与之相反,生态上有现成的手机生态做支撑,但在安全稳定性较差,无法支持仪表。
Linux 易于剪裁开发, 大众 VW.OS 和特斯拉 Version 均基于 Linux,特斯拉 Version 也直接支持使用 Linux 运行仪表软件,但 Linux 生态较弱。鸿蒙 OS 采用微内核,对于分布式产品只需要较少硬件资源就可以支持,响应速度较快,可以支持仪表等高实时稳定要求的部件工作。
2. 代码下载编译
2.1 代码下载
repo init -u https://gitee.com/openharmony/manifest.git-b master --no-repo-verify repo sync-c repo forall -c'git lfs pull'
repo sync -j1 --fail-fast2.2 编译环境搭建
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
进入源码根目录执行如下命令,从而进入Docker构建环境。ubuntu下执行:
docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
hb set
hb build -f查看编译结果:
运行:
./qemu-run
从上面log可以看到系统启动后,会启动网络协议栈tcpio,然后进入shlll,最后自动执行了Test程序。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !