去年8月9号,鸿蒙OS首次发布。由于发布会前余承东多次表示,必要时候,鸿蒙OS可以立刻上线,并有能力一夜之间将所有安卓的应用移植到鸿蒙OS上,这引起了我极大的关注。

整个发布会,余承东花了大量时间讲述鸿蒙操作系统,用的是诸如“实时”、“确定性”、“无root”、“安全”等词汇。大量这些主要用于描述“操作系统内核”的词汇,给我第一感觉是,鸿蒙OS离真正商用还非常遥远。

打个比方,如果将操作系统比喻成一辆汽车,那么,操作系统内核,充其量只能算是一辆汽车的发动机。当时,本来我想写一篇关于鸿蒙OS的文章,但发现网上的资料非常少,而且失望情绪比较浓厚,所以就搁置了。

Image

去年准备写的文章

鸿蒙OS 1.0

去年发布会后,鸿蒙OS被戏称为PPT操作系统,很大程度是因为发布会上并没有明确提出两个很值得关注的问题的解决方案:

  • 在用户层面,鸿蒙如何解决应用生态问题
  • 在开发者层面,鸿蒙提供什么样的解决方案

生态问题

经过10多年的发展,智能手机的应用已经非常丰富,一个新的手机操作系统,如果没有足够丰富的应用资源,将不存在任何立足之地。如何快速构建丰富的应用环境,是一个很现实的问题。最理想的情况是,将现有的安卓应用,用最低成本移植到鸿蒙OS上。

将一个操作系统上的应用程序移植到另外一个操作系统上,实际上并不乏成功案例。例如一个叫Wine的软件,早于90年代末的时候,已实现将Windows程序运行在Linux环境之上,甚至不需要对程序进行重新编译。

Image

Wine的运行效果

应用程序和操作系统的交互可以简单概括如下图。实际上,应用程序与操作系统的交互,是通过操作系统提供的运行时库完成的,与系统真正发生交互的是运行时库,一般使用例如中断的方式进入操作系统内核。

Image

原理上,只要目标系统提供一个功能上完全等价的运行时库,即可实现应用程序的移植。这也是Wine实现的基本原理。

值得一提的是,Wine的工程师们并没有Windows源代码(理所当然),他们仅通过逆向工程的方法完成了这项工作。相比之下,安卓是开源的,要实现这种移植理论上难度要比Wine相对要小,更何况,作为国内龙头的手机生产商,华为已经有多年的安卓定制化经验,鸿蒙OS最大的挑战是与时间在赛跑。

开发者支持

去年余承东大量关于鸿蒙OS的描述都是关于操作系统内核的,然而操作系统内核在这个年代,实现并没有想象中这么复杂。“不复杂”主要是有两个含义:

原理不复杂

在教科书上,操作系统的定义是:管理计算机资源(CPU、内存、各种硬件)的一种特殊软件。CPU的调度、内存的管理,用于硬件管理的模型与总线框架这些方面,都已经有很多成熟的参考。

规模不复杂

一个操作系统的功能虽然很庞大,但实际上内核所需实现的模块并不多,特别是所谓的微内核操作系统。下图是一个微内核操作系统的简单结构示意图,除橙色模块外,绿色模块都有很多成熟的开源解决方案,例如网络协议栈lwip。

Image

微内核操作系统结构示意图

操作系统内核的技术已经相当成熟,经过多年的发展,操作系统对计算机的各种资源已有很成熟的抽象和封装模型,例如系统调用的POSIX接口、设备文件化的抽象、设备访问的句柄封装等。

光有操作系统内核,并不能开发出实际的应用程序,一个现代的操作系统,除了提供操作系统内核(实际上不是必须),还要提供处理实际应用场景的抽象和封装,例如交互、通话、拍照、视频、位置服务等。这些面向应用的抽象和封装,就是所谓的应用程序框架。

Image

安卓的架构

很遗憾的是,去年的鸿蒙发布会,对应用程序框架的实质介绍,几乎是零。

鸿蒙2.0

作为一名互联网从业者,我原则上是反对重复造轮子的,但在当前国际大环境下,鸿蒙OS颇有点时势造英雄的感觉,它的意义已经远超技术层面。

所以,今年的鸿蒙2.0发布会,我还是很期待的,果不其然,发布会上具体的内容比1.0多了不少(看到余承东讲了大概10分钟就换人我就预感这次会有点干货。。。Image)。

Image

同时,鸿蒙OS的源代码也开放了(貌似现在开放的还是1.0的代码),简单浏览之后,让我对鸿蒙的开发情况有了更进一步的了解,初步的感觉是比较正面的,具体的分析我将会在后续文章逐一分享。

下一篇文章,将会分析一下鸿蒙OS的内核和驱动框架,敬请各位关注(本公众号)。

码字不易,请各位点赞、在看、转发、关注素质四连 ImageImage