◇◇新语丝(www.xys.org)(newxys2.com)(xys10.dxiong.com)◇◇   万事怕认真:聊聊鸿蒙   作者:冠东兄   做过硬件,也做过软件,要说到对二者研发的体验,有一点很突出:硬件你 做出来了,就能用了,好用不好用是另一码事。但软件不同,对于软件来说,有 没有是一回事,能不能用是另一回事,更不要说好不好用了。   一个软件开发出来,往往经过了性能测试,证明可以工作是远远不够的,因 为各种场景,各种压力测试,等等,都可能会暴露出很多问题。很多软件公司就 死在了这个阶段上,做出了很有创新的软件产品,但却解决不了实际使用情况下 的稳定与可用性。   谈到菊厂的鸿蒙,从去年8月份宣布1.0版本发布开始,我是从来不谈的。因 为一个号称开源的软件产品,居然在技术开发者大会上只有PPT而没有提供可下 载的代码,怎么都无法证明它真的存在。于是,等,等菊厂发布开源代码。   这一等就是一年零一个月,虽然期间菊厂说在智慧屏上应用了鸿蒙,又有大 牛揭露智慧屏里显示的是安卓9.0,我们还是终于等来了鸿蒙开源的这一天。虽 然开源的成了2.0版本,让人无从辨别1.0版本作假案是否成立,但有总比没有好 吧。   还是先说说从那几个方面入手分析吧:鸿蒙在手机上可用吗?鸿蒙能代替安 卓吗?鸿蒙的代码到底说明了什么。   既然是聊天,就得说人话,不能老说技术术语。那么我们就用产品管理上最 常见的竞品分析方法来倒推鸿蒙系统到底目前是个什么状态。这种方法在不了解 对方具体设计参数时很管用,完全从对方公开发布的市场信息来进行比对,最佳 是同一人言论比对,其次是不同人同一时期比对,再次是前后时间轴比对。正所 谓,你吹的越多,漏的底也就越多。   这次大会还是余承东主持的。在鸿蒙的历史上,余总的宣传形象一直是有些 大嘴巴,唱高调。从下面几个时间点的新闻题目就可以看出:   2019年8月,余承东提出鸿蒙会取代安卓系统。(这也就是那次1.0的发布会)   2019年10月23日,华为轮值董事长徐直军在华为媒体沟通会上称,鸿蒙本来 是用于华为内部一个内核的名字,后来被媒体误传为华为的操作系统   2019年7月,华为董事长梁华表示,鸿蒙是为物联网开发的操作系统,是否 发展为手机系统还未确定。   2019年7月,华为公共及政府事务部总裁陈黎芳澄清鸿蒙是用于工业系统, 并非为手机操作系统设计   这就是去年不同人同一时期的言论对比。从这个里面其实可以看到,鸿蒙取 代安卓系统这个说法在去年,其实算是一个忽悠类的宣传。   那么今年呢?今年的会上,余总自己说了些什么呢?   据余介绍,鸿蒙OS 2.0正式面向应用开发者发布Beta(测试)版本,9月10 日发布大屏、手表、车机版本,12月份将发布针对智能手机的Beta版本。他还宣 布从明年起华为的所有智能手机都将支持鸿蒙系统。   但与此同时,余还介绍了产品演进时间表,我相信上一段话估计是市场部门 给他的信息,而下面这段话是研发部门给他的。   “9月10日面向内存128KB—128MB终端设备开源,明年4月份面向内存 128MB-4GB终端设备开源,明年10月份,面向4GB以上所有设备全面开源。”   好吧,这是同一个人在同一天,同一个场合所说的话。这是我们做竞品分析 最喜欢的原始材料。如果第一段是真的,那么手机开发商,应用开发商会在今年 的12月份拿到手机的开源beta版,进行自己产品相应的开发与适配。但从鸿蒙源 代码的能力上来说,在今年12月份只能支持128K-128M内存的设备,到了4月份, 才可能支持4G以下的的设备。而2021年10月份才会支持4G以上设备。   那么,问题就来了:请问现在还有内存128M以下的手机吗?物联网设备倒是 符合的一大堆,但你给合作伙伴一个支持128M以下的源代码,他们怎么做手机应 用开发呢?现在的智能机基本上都已经是4G内存以上了,那么也就是说我如果是 一个手机厂商,只有到了明年10月份之后,才可能拿到华为的可以测试的软件版 本。   那么请问:今年12月发布的所谓“手机版鸿蒙”会是什么?老人机专用软件? 还是PPT版本?12月发布手机版与明年10月份支持4G以上设备,必有一个是假, 你觉得哪个假呢?   那么鸿蒙从技术上能不能代替安卓呢?   菊厂总是说鸿蒙是微内核,分布式技术。这话很唬人,那我们就来看看什么 是微内核,安卓是不是微内核。   对于微内核,用户服务和内核服务分别运行在不同的地址空间中;对于宏内 核不管是用户服务还是内核服务事实上都是内核在统一管理,它们是运行在同一 地址空间中的。下图是二者一个简单的对比表:   看完表,我们不得不谈几句技术,要不然说不清楚后面的话。   微内核定义:   内核管理着所有的系统资源,在微内核中用户服务和内核服务在不同的地址 空间中实现。在应用程序和硬件的通信中,内核进程和内存管理的极小的服务, 而客户端程序和运行在用户空间的服务通过消息的传递来建立通信,它们之间不 会有直接的交互,这样一来,微内核中的执行速度相对就比较慢了,这是微内核 架构的一个缺点。   在内核架构中,用户服务是独立于内核服务的,因此任何用户服务崩溃都不 会影响到内核服务,这就加强了操作系统的健壮性,这是微内核的优势所在。另 一点,微内核的扩展性强,添加一个功能,只需要建立一个新的服务到用户空间 当中,而内核空间不需要任何的修改。因此,微内核可移植性强、安全并且易于 扩展。   宏内核定义:   宏内核同样管理着用户程序和硬件之间的系统资源,但是和微内核不一样的 是,在宏内核架构中,用户服务和内核服务在同一空间中实现。具体一点,就是 内核可以代表内核进程运行代码,就是通常的内核进程;当用户进程经过系统调 用或者中断进入到内核态时,内核也可以代表它运行代码。这样一来,宏内核需 要管理的资源多于微内核,其大小就相对大一些了。   在宏内核架构当中,内核管理着CPU调度,内存管理,文件管理和系统调用 等各模块的的工作,由于用户服务和内核服务被实现在同一空间中,这样在执行 速度上要比微内核快。然而,宏内核的劣势也是显而易见的,那就是当内核中的 某个服务崩溃了,整个内核也会崩溃。另一点,想要在内核中添加新的功能就意 味着内核中的各个模块需要做相应的修改,因此其扩展性很弱。   简单的说吧,微内核处理速度慢,但带来的好处是安全性和扩展性好,对硬 件要求低。所以,微内核的主要应用场景是在物联网设备上。因为物联网设备其 实功能都很简单,控制计算能力要求低。最重要的是物联网设备对成本非常敏感, 比如一台冰箱,加一个智能控制与物联网芯片在成本上加1块钱2块钱,厂商可能 会接受。但如果加5块钱,恐怕就很难了。毕竟,物联网概念对于冰箱是锦上添 花,而不是雪中送炭。   这次会上华为业务软件部门的王成录就比余总实在多了,介绍的都是鸿蒙在 物联网设备上如何使用,和电器商如何合作。这就是因为鸿蒙这种微内核的系统, 虽然运算能力弱,功能不强,但对于这些物联网应用,足够了,且便宜。   当然,你如果每台冰箱加个安卓系统,4G内存,晓龙芯片,那当然运行起物 联网应用来得心应手,搞不好你还能冰箱上面装个屏幕看看电视。再变态一些, 改用windows系统,intelCPU,在冰箱里内置个一体机更棒。可这纯属大炮打蚊 子,不是技术做不到,而是能力过剩。   那么智能手机呢?我们先不说手机操作系统的生态圈问题,菊厂的鸿蒙有没 有可能像安卓一样建立起庞大的开发生态圈,只说技术本身。目前智能手机的处 理能力,与二十年前的386PC相比已经有过之而无不及。因此,目前智能手机的 操作系统,基本上还是宏内核的。比如安卓,可以看做是一个阉割过的Linux。 国际上还没有一个厂家,能够在保证目前主流智能手机的性能情况下,开发出处 理效率足够快的微内核操作系统。   所以,理论上说基于微内核的鸿蒙系统达到目前安卓系统的处理能力,不是 绝无可能,但绝不是这半年一年之内就能解决的问题。这,其实也就是为什么菊 厂说明年10月才能支持4G以上终端设备的原因。注意一点,这句话很有学问,它 们说的是终端设备,手环也算终端设备。但他们说的并不是手机,因为手机的操 作系统难度,远比手环要高。现在的安卓手环,是用了强大的平台,完成了简单 的功能。而鸿蒙要做的,是要把一个简单的平台,逐渐壮大到可以完成复杂的功 能。由上而下与由下而上,二者的难度不可同日而语。   最后怎么也得聊聊代码了。   这几天,一些专业人士写了他们对鸿蒙代码的分析,我就借用一下吧。毕竟 我早就不写代码了,前面的分析是从产品管理的角度来看的,这里借用一下技术 大牛们看了代码的分析吧。   有的人还是纠结于之前鸿蒙是否就是安卓的问题。知乎上一位牛人逐段分析 了相应代码,得出的结论是鸿蒙2.0和安卓是不同的,但和菊厂的liteOS(物联 网的东东)相近。   这个分析从侧面证实了一点,到了2.0阶段,鸿蒙是有的,解决了有没有的 问题。但能不能用,还待证实。   另一位echocxp的大牛扫看了一下134个库,我截一段他的评价,当然把对菊 厂的评价去掉了。   这次放出的比较核心的系统是liteos   https://openharmony.gitee.com/openharmony/kernel_liteos_a   这是啥?能替代安卓吗?当然不能,这是一个面向物联网的小型操作系统, 只提供了基本的内存管理和任务调度的功能。别说安卓,就是距离linux内核还 有十万八千里的距离。   这个系统大致等同于我们用的 ucos rt-thread等嵌入式操作系统。要我评 价,玩具而已。   如果这个liteos撑不住大场面,那么未来手机怎么办?从这次的鸿蒙放出的 源码来看,看不出什么。但是我猜测只有两种可能。   兼容安卓。我认为凡是号称兼容安卓的系统,就是安卓系统。   Linux + chromium 打造 web开发平台。这还有可能和安卓抗衡一些。但是 别忘了 chromium也是google的东西。   你搜索一个下面的开源软件列表,是不是看到了 linux kernel了。对了, 华为未来大型系统必须也只能基于linux内核打造。请记住Liteos就是玩具。   好吧,这两位大牛还不够细致,因为这次发布会前有个自称菊厂程序猿的人 表示加班编译完了所有500多万代码(其实发布会前加班编译这个事情本身就说 明这产品是赶出来的,没做过啥压力测试),于是大牛们就懒得数有多少行代码, 直接只看关键库了。而下面这位牛人更细心:   800万行代码,其中第三方开源库和供应商开源库中的代码就有750万行。有 菊厂版权说明的为15万行,疑似菊厂版权的另15万行。   有兴趣的可以去查一下安卓开源代码的数量,以及谷歌的核心代码数量。   要说鸿蒙代替安卓是明年的事情,我只能用鸿蒙这两个字的原意来回答:鸿 蒙者,混沌不清也。明暗部分,清浊不明。没有盘古劈天大斧,什么都不是真的。 (XYS20200922) ◇◇新语丝(www.xys.org)(newxys2.com)(xys10.dxiong.com)◇◇