鸿蒙 和 Fuchsia OS,你更期待谁?

大家好,我是小 Bob,一个关注软件领域而又执着于计算机底层的开发者~

在月初,华为的鸿蒙系统 HarmonyOS 2.0 已发布,给我最直接的感受便是真正的万物互联离我们不远了。

先说说小编对于操作系统的看法,对于计算机,我们都知道是由硬件和软件共同组成的,两者缺一不可。那么操作系统在硬件和软件中起着连接作用,操作系统通过对硬件系统的调用来提供资源给软件系统。

那么在相同的硬件和软件系统下,对于用户的感受来说,电脑和手机最直接的体验便是操作系统的不同了,在我所认识的朋友中,也有相当一部分人在买手机时是非常关注手机自带系统的,毕竟它反映了对于用户的真实感受。比如在当我和朋友的手机在硬件差不多时,就会互相体验各自不同的系统,比如各自的消息推送和隐私以及权限管理,我们会相互比较并提出各自的建议。

那么对于华为的鸿蒙 HarmonyOS2.0 以及在它之前一周左右 Google 推出的 Fuchsia OS 到底有什么新的 Idea 呢?

两者都有抛弃了安卓而自立门户,且都带有物联网的基因,那么小编便针对于两者的技术进行简单分析。

比如我们经常使用的 Windows,便是采用的混合内核。

微内核结构使用一个水平分层代替传统的纵向分层,所有微内核之外的操作系统构件都被当作服务进程来实现,它们可以通过微内核传递消息来实现相互之间的交互。因此,微内核还可以验证消息并授权访问硬件,而且微内核还执行保护功能,阻止非法的信息等。

例如,应用程序如果要打开一个文件,则它发送消息给文件系统服务,如果他想创建一个进程或线程,则它发送消息给进程服务进程。每个服务进程之间可以相互通信,并可以调用微内核中的功能。

这种技术可以不用调用内核操作,就将文件和数据库映射到用户地址空间。微内核一共提供了三个内核操作用于支持核外的分页和虚存管理:

  1. 授权:一个地址空间的所有者可以授权其他进程使用它的某些页。内核把这些页从授权者的地址空间移出,并把它们分配给指定的进程;

  2. 映射:一个进程可以把它的任何页映射到另一个进程的地址空间,使得两个进程都可以访问这些页,就形成了共享内存。内核把这些页面分配给最初的所有者,为其他进程   提供一个映射以便访问它们;

  3. 刷新:进程可以回收授权给其他进程或者映射到另外进程的任何页面;

进程间的通信:微内核操作系统中,进程之间或者线程之间进行通信的基本方式是消息消息包括消息头和消息体:消息头描述了发送和接受消息的进程;消息体包含数据或者指向数据的指针。

可以认为进程间通信是基于与进程相关联的端口(某个进程的消息序列),端口可以表明那些进程可以与这个进程通信。端口的标识和功能由内核维护,进程可以给内核发送一条指明新端口功能的消息,进程可以允许对自身授权新的访问。

地址空间不重叠的进程间的消息传递涉及到存储器到存储器的复制,因此受限于存储器的速度,复制的速度会远远低于处理器的速度。

I/O 和中断管理:在为内核结构中,硬件中断可能被当作消息处理。微内核可以识别中断但是不处理中断,它会产生一条消息给与该中断相关联的用户级线程。因此,当允许一个中断时,一个特定的用户级进程被指派给这个中断,并由内核维护这个映射。把中断转换为消息的工作必须由微内核完成,但是微内核并不涉及设备专用的中断处理。

落实到鸿蒙操作系统,它的存在让华为在智能手机操作系统上避免了“无米之炊”的困境,但其在推出面世之后,究竟会如何发展,又是否能够承担起当前我们的厚望,华为还需要回答很多问题,做很多工作,等待华为的依旧是万里长征。

Google 之 Fuchsia OS

谷歌近日正式面向公众推出了 Fuchsia OS,获得 Fuchsia 1.0 推送的设备是第一代 Nest Hub。

Fuchsia OS 与安卓不同的是它使用了全新的、自研的 Zircon 微内核,其采用 C++ 编写。内核的组件则使用到了 Go、Rust、Python,以及 C/C++ 等编程语言进行编写,如 USB 驱动程序使用 C++ 编写,而网络堆栈则使用了 Rust。

Fuchsia OS 的应用程序开发基于模块化结构。

模块化系统架构

Fuchsia OS 的系统架构也基于模块化方法。操作系统由四个或多或少的独立级别组成,每个级别都有其自己的任务:Zircon,Garnet,Peridot 和 Topaz。

Zircon

Zircon(以前为 Magenta)是新的 Google 操作系统的基础,但严格来说,它不是 Fuchsia OS 的一部分,也可以与其他操作系统一起使用。

Zircon 包含 Fuchsia OS 的内核,设备管理器,最核心的第一层设备驱动程序以及底层系统库(如 libc 和 launchpad)。此外,Zircon 还提供 FIDL(Fuchsia 接口定义语言),这是一种用于进程间通信的协议。FIDL 是独立于编程语言的,但是与流行的编程语言(例如 C,C ++,Dart,Go 和 Rust)具有联系。

作为 Fuchsia OS 的基础,Zircon 提供了对后续级别的硬件访问,在共享硬件资源上创建了软件抽象,并充当了低级软件开发的平台。Zircon 是 Project Little Kernel(LK)的结果,该项目充当 Android 的引导程序。

Garnet

Garnet 是基于 Zircon 的第一款针对 Fuchsia 的系统层。提供了设备级别的各种系统服务以及网络,媒体和图形服务,例如,用于软件安装,系统管理以及与其他系统的通信。Garnet 包含图形渲染器 Escher,程序包管理和更新系统 Amber 以及文本和代码编辑器 Xi。

Peridot

Peridot 是 Fuchsia OS 的操作系统级别,根据当前用户要求在其上管理和编译模块化应用程序。Peridot 的核心成分是 Ledger 和 Maxwell。

  • Ledger:Ledger 是基于云的存储系统(分布式存储系统),它为每个 Fuchsia 组件(模块或代理)提供单独的数据存储。这在不同设备之间同步。这使用户可以在当前 Fuchsia 的设备上继续停留在其他 Fuchsia 的设备上的位置。

  • Maxwell:通过 Maxwell,Google 在 Fuchsia OS 中集成了一个组件,该组件将给用户提供了人工智能。就像 Fuchsia 一样,Maxwell 具有模块化设计。AI 系统由一系列代理组成,这些代理分析用户的行为及其所使用的内容,在后台确定合适的信息,并将建议转发给操作系统-例如,应加载哪些模块或故事以适合用户在特定时间的行为。

    注意:到目前为止,Kronk 是 Fuchsia OS 唯一未作为开源项目开发的组件。

Topaz

Topaz 是 Fuchsia OS 的系统级别,用户可以在其中与操作系统进行交互。在此显示以下级别定义的组件的用户界面:带主屏幕的图形用户界面(取决于设备 Armadillo 或 Capybara)以及模块的可视前端。Google 的跨平台开源移动应用程序框架 Flutter 也已在此系统级别集成。因此,可以假定 Fuchsia OS 用户将来也将能够运行和使用其他系统的应用程序,例如 Android 或 iOS 应用程序。

Fuchsia OS 的四个系统级别:Zircon, Garnet, Peridot, and Topaz

最后,做为万物互联的两款新生代表,笔者还是很希望两者都能将自己的优点发挥至最大,毕竟好用即代表大部分的市场份额。

参考资料

鸿蒙系统(HOS)终于上线,微内核操作系统科普

Fuchsia OS ——未来的Google操作系统?

本文文字及图片出自 InfoQ

本文文字及图片出自

余下全文(1/3)
分享这篇文章:

请关注我们:

共有 1 条讨论

  1. admin  这篇文章, 并对这篇文章的反应是俺的神呀飘过~

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注