汉唐归来
惟有中华

余兴镐: 鸿蒙操作系统是个啥,牛不牛?|2019-08-19

自鸿蒙操作系统发布以来,网上关于鸿蒙OS的讨论热度持续不减,然而对于华为面向开发者的发布会上说的一大堆技术名词:低时延、微内核、可信安全、模块化解耦、可弹性部署、跨生态共享、赋能、万物互联……大多数观众还是不明觉厉,所以鸿蒙操作系统到底牛不牛逼?

今天,我们就来看看鸿蒙到底能干啥,以及它是如何做到的。简单的说,鸿蒙实现了两点:

1、让从灯泡、门锁、音箱……到汽车、手表、电视、手机和电脑都能使用同一个操作系统。
2、能让这些设备互为外设,自由组合,协同工作。

按官方说法,鸿蒙是基于微内核的全场景分布式OS。那个……微内核的全场景分布式OS又是什么啊?
自鸿蒙操作系统发布以来,网上关于鸿蒙OS的讨论热度持续不减,然鹅普通观众对于华为面向开发者的发布会上说的一大堆的技术名词:低时延、微内核、可信安全、模块化解耦、可弹性部署、跨生态共享、赋能、万物互联……大多数观众还是不明觉厉,一脸懵逼,这TM到底在说些啥,所以鸿蒙操作系统到底牛不牛逼?

先说结论:如果华为完全实现了开发者大会上说的那些特征,鸿蒙将会彻底改变目前的软硬件生态,远超当前的任何一个操作系统。为什么这么说呢,我们来看看鸿蒙到底能干啥,以及它是如何做到的。
简单的说,鸿蒙实现了两点:
1、让从灯泡、门锁、音箱……到汽车、手表、电视、手机和电脑都能使用同一个操作系统。
 
2、这还不算完,还能让这些设备互为外设,自由组合,协同工作。啥意思呢?你可以把你的单反相机当成你手机的前置摄像头用来自拍,也可以把你的智能手表、电视、摄像头临时组合起来,跟你的外婆进行视频通话……
说到这,我仿佛能听到小白的内心OS:听起来好像也不是很牛逼嘛,貌似之前xxx也可以做到……
不,完全不一样!
我们先来说第一点,让从灯泡、门锁、音箱……到汽车、手表、电视、手机和电脑都能使用同一个操作系统。
对于灯泡之类的弱设备,安装类似于Linux这样的操作系统几乎是不可能的,Linux是一种宏内核系统,意思是说,包括最基本的进程、线程管理、内存管理外,文件系统,驱动,网络协议等等你听说过没听说的所有东西,统统都放在内核里面,这样一来,设备本身必须具备完整的硬件和计算能力——而这些能力对于只需要完成开关和调光等基本功能的灯泡来说,是完全不必要的。
鸿蒙是怎么解决这一问题的呢?
鸿蒙使用微内核架构,内核中只有最基本的调度和内存管理,其它原本在宏内核中完成的功能,都模块化为相互独立的服务,以进程方式按需调用,它们被称之为外核。这里需要提一嘴的是,微内核因此而增加了进程间通讯(IPC),降低了效率,这一固有缺陷致使微内核系统多年来一直不被看好(参见https://en.wikipedia.org/wiki/Tanenbaum%E2%80%93Torvalds_debate),而鸿蒙的技术改进,使之对比其它微内核系统如QNX和Fuchsia的进程间通讯(IPC)效率提升3到5倍之多。
你可以理解为宏内核是一台各部件都焊接在一起功能完整的机车,而微内核只保留了发动机,其它组件按需添加从而组装成不同的车辆。采用宏内核的苹果当前只能为PC电脑开发MacOS,手机用iOS,手表的Watch OS,电视的TV OS……如果要将电饭煲、冰箱、扫地机器人、空调都接入网络实现统一管理呢?硬件与操作系统绑定,软件又与操作系统绑定,要为这么多不同种类的设备开发不同的系统,每个系统还需要开发不同的软件,这就是一个噩梦。
采用微内核的鸿蒙,则可以按需扩展,实现弹性部署。使用同一个系统,适配从KB到GB内存规模的不同设备。

在为这些不同规模的硬件适配同一个操作系统之后,华为还通过方舟编译器和面向多终端开发的IDE,使软件可以一次开发,多端部署。比如说你为鸿蒙系统开发了一个音乐播放器,通过在开发环境中(IDE)对组件进行调整,它就可以为手表、手机、电视等不同大小的屏幕自动适配其显示界面。
通过以上一系列骚操作,鸿蒙最终能够实现业界多年以来的一个梦想:不同硬件,同一个系统。一次开发,多端部署。
不论是哪个公司哪个系统,能够实现第一点,就已经牛逼得不要不要的了。然而鸿蒙相对于其它操作系统来说真正核弹级的威力,其实是第二点,让这些设备互为外设,自由组合,协同工作。
让同一账户下不同硬件的鸿蒙设备——它们的显示器、摄像头、扬声器、麦克风、传感器、计算能力、通讯能力——实现解耦合,被虚拟成模块化的硬件能力。它们在一起构成了一个用户可以以任意组合方式调用的硬件能力资源池。最终实现了全场景下的终端无缝协同体验。
在此之前从来没有任何一个操作系统具有这种能力,鸿蒙是第一个可以做到这一点的分布式操作系统。不论Linux、安卓、iOS还是谷歌尚未发布的Fuchsia,都不具备这种能力。

操作系统与硬件能力解耦,不同设备在一起构成一个硬件能力虚拟化的资源池。

让我们回顾一下上文提到的场景:把你的智能手表、电视、摄像头临时组合起来,跟你的外婆进行视频通话。在鸿蒙出现之前,如果我们需要把不同的设备组合起来完成一件事情,就必须为此研究一套解决方案,开发出一套专门的系统。对应以上场景的传统解决方案,就是视频会议系统,它需要专门为该系统开发的摄像头、服务器和定制的软件,还需要在主会场和各分会场分别部署这一系统并进行联调。这种专用系统通常都极为昂贵,而扩展能力却极为有限,使用起来特别费劲,安全性和稳定性还十分堪忧(华为十几年前就开发过这样的视频会议系统)。
在鸿蒙出现之前,用户的不同设备本质上是相互孤立的,只能在应用层面上进行网络通讯。就算是为了特定目的而专门定制的系统解决方案,它们也无法像同一个设备上的硬件之间那样协同工作,可靠性也很差。更别说是用户想要根据自己的临时需求,组合不同的设备来进行协同工作了,根本上是不可能完成的。
那么鸿蒙是如何做到这一点的呢?鸿蒙把每个设备的硬件能力抽象成驱动,同一账户下的多个设备构成了一个硬件能力虚拟化资源池,在底层上通过网络通信连接。这就是华为开创性提出的分布式软总线技术

我们知道,这些虚拟化的硬件能力原本属于不同的物理设备,要使它们任意组合起来像同一个设备那样工作,是如何可能的呢?这就是华为作为一家通信企业多年的技术沉淀,鸿蒙对于硬件能力的虚拟化,是把计算机内部原本需要通过系统总线(System Bus)的硬件通信,改为通过网络协议通讯,同时对网络通讯协议也进行了改写,把计算机网络通讯协议七层结构中的网络层、传输层、会话层和表示层,合并为一层,称之为分布式软总线的极简协议
通过对协议的优化,鸿蒙的分布式软总线可以做到低时延:端到端时延小于20ms,高吞吐:有效吞吐高达1.2Gbps,高可靠:抗丢包率高达25%。通过分布式软总线使多个设备的硬件能力可以相互共享,互为外设,实现了终端的无缝协同体验,开启了万物互联的全场景智慧时代。
用户调用多个设备可以像调用同一个设备那样工作,这就是全场景分布式系统的真正魅力所在。上文例子中提到的视频会议系统,无线投屏之类,对于实现了全场景的分布式系统来说,就像是原始时代的拙劣的模拟技术。

关于第二点,你可以理解为,鸿蒙从软件的层面,把设备上的各个硬件能力抽象成像乐高积木那样的模块,你可以任意替换重新组合这些积木模块,完成全新的任务,同时你并不用真正在物理意义上把设备拆解成独立的硬件。
这种像乐高一样,把设备的硬件能力模块化,然后任意重新组合的能力,可以用在任何你现在想象到或者想象不到的场景:
· 你此时正在看电视,当访客按门铃的时候,大门的监控画面会传到电视上,你在书房时传到工作电脑的屏幕上,在卧室时则传到手机或者手表画面上。
· 你打开了一首喜欢的音乐开始做早餐,当你进入到不同的房间,背景音乐切换到对应的房间而不会中断,当你结束这一切在开车上班的路上,音乐会自然的切换到车内音箱。
· 你运营着一家养鸡场,这些仔鸡在不同的生长阶段需要不用的温度湿度组合,甚至你新买了一台可以监控环境是否发生了细菌过度繁殖的设备。如果这些传感器都支持鸿蒙系统,那么用户就可以轻松把它们组合起来,使用自己的业务逻辑动态调整温度湿度和进行消毒。
鸿蒙系统,结合5G高速网络,人类将从此进入一个极具想象力的时代
=====================
最后再来说一说手机。
实现了万物互联的全场景分布式操作系统,与现在的手机操作系统是完全不同的。它面向的是未来,面向的是完全不同数量级的设备。从大的趋势上来说,必然会取代现在的安卓和iOS这种与硬件深度绑定的类型的操作系统。Google和苹果显然也看到了这一趋势,也正在开发类似的系统以取代它们自己安卓和iOS,但他们的新系统似乎并不具有分布式软总线的能力。
从操作的层面上,新的系统将会采取什么步骤,打破当前安卓和iOS建立的应用生态壁垒呢?鸿蒙采取的路线是先用多内核,加上方舟编译器的助力,使之完全兼容现有的安卓生态,未来,将会过度到完全的鸿蒙微内核。
鸿蒙并不是什么备胎,鸿蒙可能是安卓和iOS的掘墓人。
赞(0)
请您分享转发:汉风1918-汉唐归来-惟有中华 » 余兴镐: 鸿蒙操作系统是个啥,牛不牛?|2019-08-19
分享到