首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

华为的鸿蒙之气!

公元2019年8月9日,在中国南部的著名城市东莞,在一年一度的华为开发者大会上,华为发布了一个重磅的信息,宣布了一个名为“鸿蒙”的操作系统。

因为大家都知道的原因,很多人都认识到了操作系统对中国IT产业的重要性。于是朋友圈立刻被这个鸿蒙OS引爆了。

坦率说,我刚听到这个消息后,没太往心里去。因为这几年,关于OS的新闻挺多的,不是一个两个。

过了一些天,一些公众号的文章出来了,很多人开始争论什么是微内核。我草草浏览了一下,立刻不想继续读了,因为很多人根本没搞清微内核的本质。简单来说,微内核的最关键特征是内核运行在独立的地址空间里,即使和驱动程序通信都是跨地址空间的。

又过了一些天,一位好朋友发了一个链接给我,说是鸿蒙OS的开源代码,想请我看一下,分享一下我的看法。这个是让我心动的,但是因为太忙还是搁置了。

又过了一些天,格友群里又有朋友希望我分享一下对鸿蒙OS的看法。

还是莱布尼茨的那句话:“不发生作用的东西是不会存在的”。我终于被影响了,想格一下鸿蒙OS。

按老雷的风格,当然要从代码层面着手,擅于讲PPT的人太多了,何必用老雷啊。

在GitHub上搜索HarmonyOS,发现65个项目。

虽然第一个搜索结果的粉丝最多,但从名字来看不像是官方版本,于是我便选择了第二个。从第二个的路径来看,有点像是huawei-iot部门的官方站点。

huawei-iot/HarmonyOS

于是我下载了这个项目的master代码,在src子目录下有两个子目录:

浏览这两个目录里的代码。

在LiteOS子目录下,里面确实是华为的代码,也确实是个OS,只不过太简陋了,是针对ARM M系列处理器的。所谓ARM M系列处理器,它们的最大特征就是没有虚拟内存支持,就是单一的一个地址空间,所有东西都跑在那一个平坦空间里面。

LiteOS有多任务支持,但是看起来如此的童年:

/* USER CODE BEGIN 0 */

void task1(void)

{

int count = 1;

while (1)

{

printf("This is task1,count is %d\r\n",count++);

LOS_TaskDelay(1000);

}

}

UINT32 creat_task1()

{

UINT32 uwRet = LOS_OK;

TSK_INIT_PARAM_S task_init_param;

task_init_param.usTaskPrio = 0;

task_init_param.pcName = "task1";

task_init_param.pfnTaskEntry = (TSK_ENTRY_FUNC)task1;

task_init_param.uwStackSize = 0x200;

uwRet = LOS_TaskCreate(&g_TskHandle, &task_init_param);

if(LOS_OK != uwRet)

{

return uwRet;

}

return uwRet;

}

这就是让万众空巷的鸿蒙OS么?绝对不是啊。

再看harmony子目录,里面居然是.Net的代码,作者也不是华为。于是这个项目进入了我的黑名单。

再继续看搜索结果中排名第一的吧。它有74次提交,让人感觉有点靠谱。

但是看文件内容,居然还是刚才看到的那个LiteOS。且看目录结构:

继续浏览源代码,还是刚才那么童年,且看Idle线程的工作函数:

LITE_OS_SEC_TEXT VOID osIdleTask(VOID)

{

while (1)

{

}

}

什么时代了,能这么空转么?不要节能进C state么?

回过头来看那70多个提交,倒是挺有意思的。

在8月13日,一位名叫haxianhe的同行把下面的这句话:

鸿蒙OS支持多终端的开发IDE,支持多语言统一编译。也就是开发者可以一次性的生成在不同类型的终端中运行的APP。这个策略是和鸿蒙的跨多终端部署的策略紧密相关,如果相同的应该不同的终端都需要重新编译适配,那么这个对开发人员典型是不友好的。

修改为:

鸿蒙OS支持多终端的开发IDE,支持多语言统一编译。也就是开发者可以一次性的生成在不同类型的终端中运行的APP。这个策略是和鸿蒙的跨多终端部署的策略紧密相关,如果相同的应用不同的终端都需要重新编译适配,那么这个对开发人员典型是不友好的。

其实只是改了一个错字。可是,改了之后也还很不通顺。特别是最后一句:那么这个对开发人员典型是不友好的。

有人说,方舟编译器可以把PPT编译为机器码,难道这个文档也是方舟编译出来的么?

继续浏览其它提交,还有一个很有意思:

又是改文字,把交通大学的拼写纠正了一下。

于是这个项目仓库也进入了我的黑名单。

搜索互联网,知乎上有同行在讨论鸿蒙开源的问题,一致的意见是GitHub上的代码都是假的。没想到GitHub这样以奉献智慧为主题的地方也有如此多的假冒伪劣,污秽不堪,多么丑陋的世界啊。

还记得几年前看到有个国内的同行把微软的WRK源代码放到了GitHub上,我还特意联系他,建议他删除。

没有找到源代码,那么只好放弃了源代码这条路,同时也让我开始怀疑有关的报道,不能轻易相信。能相信谁呢?看8月9日当天的录像吧,这是众目睽睽之下的,是可信的。

于是,特意抽出了时间,看8月9日HDC2019的会议录像。

录像质量很好,图像绚丽,声音清晰。给我的第一个印象是会场很高大上。

一点铺垫后,便进入了操作系统这个正题,但是在主角出场之前,先介绍了一下现有OS的问题。比如说安卓使用的Linux内核代码庞大冗余。

再比如,操作系统与硬件绑的太紧,应用不能共享。

也介绍了很多厂商都在研发新的OS,但是都困难重重。

讲到这里,会议系统的“弹幕”发言里有人说“没有说到任何实质内容”。

于是,主角出场了,Harmony OS。

鸿蒙的意思是混沌初开,Harmony的意思是和谐。

接下来,讲者介绍了鸿蒙OS的很多优点。主要是围绕微内核展开的,比如内核的安全性更好,不容易被root等,难怪后来朋友圈里展开了一系列关于微内核的讨论。

还介绍了开发工具,特别强调了多语言支持,也就是前面那段有错别字的文档所描述的,开发者可以使用各种编程语言,最后都可以编译为在鸿蒙OS运行的代码。

坦率说,这个思路一点不新鲜啊,微软当年构建Windows Vista的宏伟蓝图时就说过无数遍了。后来Vista有多惨大家都看到了。

等了许久,终于看到了我希望看到的架构图。

这个架构图或许是我们今天从华为外部能看到的关于鸿蒙OS的最深入技术资料了,特意放大关键部分。

最下面的是所谓的微内核,目前列出了三种:Linux、鸿蒙微内核和我们前面提到过的LiteOS。怎么有Linux呢?此处就不加评点了,大家看了后可能心里都明白。

内核上面是基础服务,应该就是演讲中所谓的外核。如果真的使用微内核架构的话,这一部分应该包含设备驱动程序、文件系统等基础服务的。可是现在没有,因为Linux里提供了。

演讲的末尾还提到了鸿蒙OS的简要历程。主要的时间点是:

2017年鸿蒙内核1.0

2018年鸿蒙内核2.0

2019年鸿蒙OS 1.0

2020年鸿蒙OS 2.0

2021年鸿蒙OS 3.0

在演讲的末尾,宣布了两个字:开源

但是没有宣布开源的时间,一个多月过去了,GitHub上的假开源项目得到了13K的星星,出尽风头,可是真的开源项目还不知道在哪里。

开发一个新的内核太难了,尤其是在今天这样的时代。

鸿蒙让很多人激动不已,甚至令全球瞩目。看到很多国外的媒体也争相报道这件事,说中国有了可以取代安卓的操作系统。可是老外不懂得,在中文里,鸿蒙的本来意思就是一股气,而且是浑浊之气。

注:本文转载自“格蠹老雷”公众号,侵删

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190928A0F6UV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券