0

    我们对“鸿蒙OS”的理解(旧文重发)

    2023.04.21 | admin | 296次围观

    鸿蒙OS技术特性二:确定时延引擎和高性能IPC技术,实现系统天生流畅

    华为对改性能的解释为:“鸿蒙 OS通过使用确定时延引擎和高性能IPC两大技术解决现有系统性能不足的问题。确定时延引擎,可在任务执行前,分配系统中任务执行优先级及时限进行调度处理,优先级高的任务资源将优先保障调度,应用响应时延降低25.7%。鸿蒙微内核结构小巧的特性使IPC(进程间通信)性能大大提高,进程通信效率较现有系统提升5倍。”

    高性能IPC。IPC指的是进程间通信,Inter process communication。IPC是一组编程接口,让程序员能够协调不同的进程,使之能在一个操作系统里同时运行,并相互传递、交换信息。

    为什么需要进程间通信?

    在计算机实际运行过程中,可能会出现一个系统中好几个进程同时在进行的情况。这时,不同进程之间需要相互协作、相互沟通,以便更好的完成工作。而由于不同进程之间的相互独立性,进程间的沟通就变得比较困难。因此,就产生了不同进程间的通信方式,来解决不同进程之间的通信问题。

    因此,基于以上的解释,我们可以理解进程间通信的目的:

    1)数据传输:一个进程需要将它的数据发送给另一个进程。

    2)资源共享:多个进程间共享同样的资源。

    3)通知事件:一个进程需要向另一个或一组进程发消息,通知它们发生了某种事件(如进程终止时要通知父进程)。

    4)进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。

    而对于华为鸿蒙OS而言,其进程间通信(IPC)性能大幅提升,我们可以理解为不同进程之间的对话和沟通效率大幅提升。

    鸿蒙OS技术特性三:基于微内核架构,重塑终端设备可信安全

    华为对该功能的描述为:“鸿蒙OS采用全新的微内核设计,拥有更强的安全特性和低时延等特点。微内核设计的基本思想是简化内核功能,在内核之外的用户态尽可能多地实现系统服务,同时加入相互之间的安全保护。微内核只提供最基础的服务,比如多进程调度和多进程通信等。”

    这其中的一个关键词是:微内核。这也是鸿蒙OS的关键特性之一。

    在上面,我们提到了分布式操作系统与微内核的关系。一般分布式操作系统通过微内核的方式来实现。

    在理解微内核之前,我们先理解下,什么是内核?

    操作系统中的“内核”,内核是操作系统的核心部分,它管理着系统的各种资源,我们可以把他比作连接应用程序和硬件的一座桥梁,是直接运行在硬件上的最基础的软件实体。

    微内核的概念,是由Richard Rashid在卡内基梅隆(Carnegie-Mellon)大学开发Mach操作系统时提出的,目标是建立一个基于消息传送(message passing)机制的最小内核,以便在此基础上建造对其它操作系统的模拟层来模拟其它操作系统的特性。

    微内核(Microkernel),是一种内核的设计架构,由一组尽可能将数量最小化的软件程序组成,它们负责提供、实现一个操作系统所需要的各种机制与功能。这些最基础的机制,包括了底层地址空间管理,线程管理,与行程间通信(IPC)。

    微内核的设计理念,是将系统服务的实现,与系统的基本操作规则区分开来。它实现的方式,是将核心功能模块化,划分成几个独立的行程,各自运行,这些行程被称为服务(service)。所有的服务行程,都运行在不同的地址空间。只有需要绝对特权的行程,才能在具特权的运行模式下运行,其余的行程则在用户空间运行。

    微内核提供一组“最基本”的服务,如进程调度、进程间通信、存储管理、处理I/O设备。其他服务,如文件管理、网络支持等通过接口连到微内核。而在传统的内核情况下,内核集成了大量的基础服务和其他服务,这样,内核显得就更加的笨重。

    微内核的功能:微内核设计带来了良好的兼容性、扩充性、灵活性、移植性、可靠性和网络支持。

    但是,微内核设计有一个重要缺点:由于微内核操作系统使用进程来隔离系统组件,这些组件之间的通信使用了消息传递方式来实现一个组件对另一个组件的调用-这实际上是进行了一次RPC(例如在NT上是LPC)调用。但这种类似RPC的方式是通过进程间通信(IPC)机制实现的,其性能一般低于传统操作系统的系统调用的性能。由于微内核操作系统的类似RPC调用是通过消息传送机制实现的,而传统操作系统的系统调用一般是通过类似trap的方法实现。相比于trap方法,通过消息传送机制实现的这种类RPC调用的方式较慢。

    鸿蒙OS技术特性四:通过统一IDE支撑一次开发,多端部署,实现跨终端生态共享

    华为对此性能的官方描述为:“鸿蒙OS凭借多终端开发IDE,多语言统一编译,分布式架构Kit提供屏幕布局控件以及交互的自动适配,支持控件拖拽,面向预览的可视化编程,从而使开发者可以基于同一工程高效构建多端自动运行App,实现真正的一次开发,多端部署,在跨设备之间实现共享生态。华为方舟编译器是首个取代Android虚拟机模式的静态编译器,可供开发者在开发环境中一次性将高级语言编译为机器码。此外,方舟编译器未来将支持多语言统一编译,可大幅提高开发效率。”

    下面我们逐句来进行解读

    1)IDE,Integrated Development Environment ,即集成开发环境。IDE是一种编程软件,是集成了程序员语言开发中会需要的一些基本工具、基本环境和其他辅助功能的应用软件。IDE一般包含三个主要组件:源代码编辑器(Editor)、编译器、解释器(Compiler、Interpreter)和调试器(Debugger)。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套件。

    开发人员可以通过图形用户界面访问这些组件,并且实现整个代码编译、调试和执行的过程。现在的IDE也提供其他帮助程序员提供开发效率的一些高级辅助功能,比如代码高亮,代码补全和提示,语法错误提示,函数追踪,断点调试等。

    现在有大量的免费开源的和商用的IDE,包括:

    1、微软 Visual Studio(VS):VS支持创建各种类型的程序,包括从桌面应用、Web应用、移动APP、到视频游戏。对于初学者到高级专业开发人员来说都是最棒的开发工具。VS有可定制仪表板和可停靠的窗口。它支持多大36种不同的编程语言,如:ASP.NET、DHTML、JavaScript、Jscript、Visual Basic、Visual C#、Visual C ++、Visual F#,XAML等。

    2、NetBeans:是一个免费开源的Java集成的开发环境软件,主要用于Java开发。适合从零开始或者对已有工程进行开发。NetBeans支持多种编译器,如CLang/LLVM、Cygwin(GNU)、MinGW和Oracle Solaris Studio等。

    3、PyCharm:是著名编程语言Python的IDE,由知名的IDE开发商JetBrains出品。除了Python之外,PyCharm还支持其他Web开发语言:JavaScript、Node.js、CoffeeScript、TypeScript、Dart、CSS、HTML等。

    除此之外,典型的IDE还包括:IntelliJ IDEA,Eclipse,Code:: Blocks,Aptana Studio 3,CodeLite等。

    2)多语言统一编译

    不同的集成开发环境IDE,支持不同的开发语言。比如,上面提到的微软Visual Studio 支持的编程语言包括:ASP.NET、DHTML、JavaScript、Jscript、Visual Basic、Visual C#、Visual C ++、Visual F#,XAML等。

    而鸿蒙OS 可以支持多语言统一编译,而这很大程度上是依赖于华为开发的方舟编译器。上面,我们提到,编译器是计算机(IT设备)系统软件中一个基础和核心软件。方舟编译器与鸿蒙OS结合,应用程序开发者可以利用方舟编译器来进行多语言同一编译。这在一定程度上能够显著提升开发展的开发效率。

    3)分布式架构Kit。Kit在IT行业指的软件工具包。我们认为,这里的分布式架构的工具包,是与鸿蒙OS的分布式架构自成一体的。分布式架构的思想体现在整个鸿蒙OS的各个组件当中。其能够带来分分布式架构OS的所带来的便利和功能。

    而以上鸿蒙OS的这一性能的核心意思是:通过华为提供的集成开发环境,和支持多语言统一编译的方舟编译器,应用程序开发人员,可以大幅提高软件开发效率,包括缩短应用程序开发周期、语言模块调用、应用程序的自动调优等。而且,通过华为提供的开发环境和编译器开发的应用程序微处理器与外设大学教程,可以适应于多种不同类型的终端,包括手机、PC、汽车以及其他各种智能终端。

    鸿蒙OS之所以要要想尽一切办法,来给软件开发人员带来便利和效率,核心还是打造基于鸿蒙OS的IT生态。因为最终这些应用软件都要在鸿蒙OS上来运行。

    3、方舟编译器

    通过以上,我们看到鸿蒙OS之所以能够为软件开发者提供支持多语言统一编译的极大便利,核心还是基于方舟编译器的应用。

    首先,我们解释一下,什么是编译器?

    编译器,是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)。

    之所以需要编译器,只因为计算机是一个二级制单位,是通过0和1的组合来实现不同的操作。而人类的编程语言微处理器与外设大学教程,从较早的汇编语言,到C、C++,再到我们现在看到的Java语言等。

    说的简单通俗点:编译器就是想一个翻译官一样,将人类的逻辑语言,翻译为机器可识别可理解可执行的机器语言。翻译的快慢可以影响沟通交流的效率,同样,编译器的效率也就影响了程序运行的效率。

    关于方舟编译器的发展历程

    2019年4月,在华为P30系列国内发布会上,华为首次发布了方舟编译器。方舟编译器是基于GCC开发的交叉编译器套件,它包括了C、C++、Fortran的前端,也包括了这些语言的库(如libstdc++、libgcc等)。

    方舟编译器,是对传统Android操作系统编译器的改进和突破。

    1)方舟编译器,可以实现多语言联合优化编译,大幅提升运行效率

    我们知道,在Android操作系统中,使用的语言是Java语言。而Android操作系统之上运行的各种各样的应用程序,其开发语言既有Java语言,也有C和C++。这就使得操作系统的Java语言与应用程序的各种语言进行交互。这种交互的接口就是JNI(Java Native Interface)。在数据访问、函数调用、生命周期维护、异常处理时,需要这两种语言交互,进行相互调用。而在相互调用过程中,会占用一定的系统资源。使得系统之上的应用程序运行效率降低。

    方舟编译器,是业界首个多语言联合优化的编译器,开发者在开发环境中可以一次性将多语言统一编译为一套机器码,运行时无需产生跨语言带来的额外消耗,并可以进行跨语言的联合优化。

    2)方舟编译器直接编译出机器指令,无需繁琐的虚拟机运行

    在Android系统中,程序的运行,需要借助ART虚拟机来执行,编译器是把源程序的每一条语句都编译成机器语言并保存成二进制文件,解释器在执行程序时,一条一条地解释成机器语言来让计算机执行。而在这个动态编译和解释过程中,消耗了大量的系统资源。

    方舟编译器,可以在开发环境中,就可以完成全部代码的编译。所以在手机运营环境中,应用程序并不需要将进行语言的编译和解释,可以直接读取运行,提升运行效率。

    3)方舟编译器提供高效的内存回收机制

    早期C、C++需要开发人员自己管理程序,对系统内存的实用和释放,影响开发效率。Java的虚拟机模式提供了内存GC(垃圾回收)机制,但需要短暂中断应用,成为随机卡顿的根因之一。

    方舟编译器,可以对内存进行随时回收,而是回收时,并不需要暂停应用,保证了系统和应用程序运行的流畅性和高效性。

    全 文 总 结

    1、鸿蒙OS,只是冰山一角

    我们认为,鸿蒙OS只是华为建立自身IT生态体系的冰山一角。我们在之前的文章中分析了华为产品发展的逻辑。从IT产品形态角度来讲,华为经历了从早期的硬件产品向软件产品的演进。而在软件领域的不断突破,逐步奠定了华为在IT产业的核心地位。特别是在基础软件领域,华为的默默进取,在基础软件核心环节不断取得新的成就。

    目前我们看到的是鸿蒙OS和方舟编译器,都只是华为自身IT生态底层软件的一小部分。在芯片、数据库等领域,华为同样取得了一些突破性进展。我们知道,如果在一套新的IT生态中,让基础软件都能充分发挥其最高性能,需要各个基础软件不断适配和完善,最终达到完美耦合。这也是我们在PC时代看到的Wintel以及移动时代看到Android+ARM坚不可破的原因。因此,我们可以想象,华为自身开发的这些基础软件,从一开始就是高度耦合的。

    2、技术变革,带来产业格局变化

    每一次的重大技术变革都会预示着产业格局的演变,甚至对产业链进行重构,促进主流企业的重新洗牌。目前,我们看到华为已经在多个IT领域进行了产业格局的重构,从早期的路由器,到现在手机、存储等市场。而以上我们看到的只是硬件部分。其实,更重要的是随着5G逐步商用,华为正逐步在最为艰难的核心底层基础软件部分,来对市场格局进行重构。目前,我们已经看到华为在5G通信领域占据了全球产业链的话语主导权。未来,我们有望看到在芯片、操作系统、数据库等领域的不断崛起。

    3、硬件企业,软件化

    硬件企业逐步向软件方向延伸,在IT领域我们经常看到这样的例子。这也是硬件企业发展到一定阶段的必然选择。而在这个演化方向上,往往只有行业的领导者才有可能取得一定成功。至于从硬件到软件转化的原因,我们的理解:

    1)硬件发展到一定阶段,技术和架构逐步成熟,不同企业的硬件产品逐步趋同。对于IT产品而言,只有差异化(有价值的差异化)才能获取高额利润。趋同带来的利润降低迫使行业领导者不断加快新技术的应用,即通过软件来增加硬件的功能或者提升硬件的性能。即硬件发展到一定阶段,可能决定硬件竞争力的倒不是硬件本身,而是软件。

    2)从技术角度来看,硬件产品的迭代速度较慢,迭代慢带来的结果是,客户采购新产品的动力和需求降低。通过软件的应用来加快硬件产品的迭代速度,缩短客户的采购周期。

    3)在原来IT产业分工下,硬件和软件可以由不同的公司来提供,彼此发挥相对比较优势。但在现有的IT阶段下,硬件和软件的适配要求明显提高;在某些领域,硬件与软件只有做到相互定制、相互融合,其整体性能才能得到最大化释放。

    同时,另一方面,我们也可以关注:

    1、操作系统与芯片的耦合度

    鸿蒙OS的目标无疑是下一代5G通信技术下的核心操作系统。从IT底层软件发展规律来看,操作系统作用的发挥,需要与芯片进行长期、不断、反复的适配、修改和完善,以达到最大限度的相互耦合。这样才能最大发挥操作系统和芯片双方的功能。比如,PC时代的Windows操作系统与Intel芯片经历了几十年的适配,移动互联网时代的Android操作系统与ARM芯片也达到了高度耦合。对于鸿蒙OS操作系统,如果未来在5G时代发挥作用,需要不断与底层的芯片进行适配耦合。如果是华为自身开发的芯片,耦合度会非常高。如果是其他厂商的芯片,双方需要一段时间的适配过程。

    2、鸿蒙OS的微内核

    微内核本身不是新鲜事物,相比安卓系统,华为鸿蒙OS将各种硬件驱动拿到核外进行处理,这在一定程度上带来了架构的灵活性。但凡事都是有利有弊,灵活性和扩展性增加的同时,对核内与核外之间的通信要求更高。未来鸿蒙OS在对全场景跨终端的适用方面,可能也需要与硬件厂商的产品不断进行适配。

    3、鸿蒙OS全场景的适配,也需要不断迭代过程

    鸿蒙OS的目标适用主题是全场景的IOT领域。客观来讲,这个适配的场景确实挺大的。从目前我们看到的历史操作系统来看,能够广泛适用这么多样化智能终端的的操作系统并不多。比如,PC、手机和汽车中适用的操作系统都是不一样的。鸿蒙OS要达到在每一个应用场景都能高效运行,需要其不断的根据不用应用场景对计算需求的特点,而不断改进和完善自身架构和性能。这是IT产品长期迭代的过程。

    4、开放、开源,而不要打造封闭系统

    核心底层基础软件的开发和应用,一方面是开发难度较大,更重要的是能否建立起以该基础软件为核心的一套完整的产业链,形成正向循环的产业生态体系。在全球IT发展历史上,我们既看到过封闭生态体系,比如苹果的产品;也看到开放生态体系,比如谷歌、微软的产品等。而对于未来的IT产业发展而言,只有不断开放,更加开放,才能与生态伙伴一起成长。

    而从PC历史发展来看,目前还没有看到通过封闭系统,来持续获得不断扩大的业务规模的。对于华为而言,目前正在逐步建立自己的核心底层生态体现,从芯片、算法到操作系统、数据库,更不用说早期发展起来的服务器、存储和网络设备。而对于未来5G产业,只有不断开放、开源,才能获得人生的“开挂”。

    相关文章:

    版权声明

    本文仅代表作者观点。
    本文系作者授权发表,未经许可,不得转载。

    发表评论