Google的新操作系统:从技术角度看Fuchsia

  • A+
所属分类:天涯八卦

谷歌正在“悄悄”开发一款全新的操作系统,命名为“Fuchsia”。Google 在 Fuchsia 的 GitHub 主页上这样介绍 Fuchsia:“Pink + Purple == Fuchsia (a new Operating System)”。

Google 开发的操作系统都有个共同点,全都基于 Linux Kernel:Chrome OS, Android 和 Chromecasts。但是 Linux Kernel 并不是在所有的场景中都能起到很好的作用(影响性能或者造成其他影响),特别是嵌入式设备,类似汽车仪表盘和 GPS 单元。

Fuchsia 主页所能获取的信息有限,但是这完全不能满足我们的好奇心。

Google的新操作系统:从技术角度看Fuchsia

| 比 Linux Kernel 牛?

从 Fuchsia 所包含的项目和文档发现,Fuchsia 的内核是 Magenta kernel,一个基于"Little Kernel"的项目。Magenta 跟 Fuchsia 的关系类似 Linux 和 Android,Magenta 内核驱动着强大的 Fuchsia 操作系统。Magenta 被设计为商业性嵌入式操作系统,类似 FreeRTOS 和 ThreadX。

但是,Magenta 比 LittleKernel 强大很多,专为现代化、高处理器的设备而准备,支持嵌入式设备、智能手机和桌面计算机。以下 Little Kernel 简称为 LK。

Magenta 的内部架构基于 LK,但是以上的层是全新的。Magenta 有进程的概念,而 LK 没有。Magenta 进程是由 LK 级的架构组成的,比如线程和内存。

其他的不同点:

Magenta 有一流的用户模式支持,LK 没有

Magenta 有一个对象处理系统,LK 也没有这个概念

Magenta 有基于 capability 的安全模型(类似 Android 6.0 权限),LK 的所有代码都是可信的

这里magenta/mg_and_lk.md at master · fuchsia-mirror/magenta · GitHub提到:

LK is a Kernel designed for small systems typically used in embedded applications.  It is good           alternative to commercial offerings like FreeRTOS or ThreadX. Such systems often have a very           limited amount of ram, a fixed set of peripherals and a bounded set of tasks.

看样子是一个嵌入式实时系统,和VR/AR/汽车甚至机器人有些关系;
但后面又说:

On the other hand, Magenta targets modern phones and modern personal computers with fast       processors, non-trivial amounts of ram with arbitrary peripherals doing open ended computation.

那么又不像是嵌入式设备专用的系统,倒像是一款通用系统。

Fuchsia的开发者给出了一些提示:

Purple - A system with high performance graphics, low-latency input, and a beautiful UI.
Pink - An incredibly modular system for developers and users.

再看它的内核之外的东西:

Google 把 Flutter 作为 Fuchsia 的用户界面,Dart 作为主要的编程语言,从颜色和展示效果上看,使用的是 Material Design UI 理念。

Fuchsia 支持 32 位和 64 位的 ARM CPUs,还有 64 位的 PCs,后续应该会支持 Raspberry Pi 3。

UI layer使用Flutter(一个Dart语言实现的移动应用框架,支持Android/Ios,可以写Native App);底层渲染 Physically Based Renderer,项目代号Escher,支持Vulkan作为底层 Graphics API;那么会不会从系统层面开始支持Material Design呢(Flutter目前就采用的MD,当然这个框架也是支持第三方设计样式的)?也就是要让MD更进一步。

其中还有一个Mojo框架(这个东西似乎和Chrome关系很密切,是未来该系统能支持多种编程语言的关键),已经绑定了一些语言,比如:Go, Java, JavaScript, Python,Rust。用Dart来写GUI部分,这些语言可以用来写后台代码。

项目的贡献者有Travis Geiselbrecht 和 Brian Swetland,这两人是Android系统的主力开发者,过去开发过WebOS,曾经是 BeOS 的开发者,也参与开发过NewOS, Danger以及iOS。而Dart,Flutter,Mojo这些又来自Chrome团队,再联想之前的传闻“Google打算在2017年统一Android和Chrome OS”,会不会就是这个呢?

Google一再的强调不会支持(SDK层面)Java以外的语言来开发Android App,最近Chromebook又可以无缝运行Android App(通过采用类似容器的技术),那么这个新系统估计也会以这种方式支持已有的Android App。腹黑一下:和Android不同,这个系统似乎目前没看到有VM之类的东西,而且以后可以不用再和Oracle“剪不断,理还乱”了。

Google现在有两套系统:

Android——在平板上以及大屏幕上表现差强人意;Android的碎片化问题应该无解了,只能缓解无法根治;

ChromeOS——在手机上无所作为,在教育领域目前倒是表现的很不错,但不支持Native App(最近刚刚无缝支持Android App),Web App堪以大用,替代Native App(真的有必要吗?)还很遥远。

在未来有着潜在巨大机会的IOT,VR/AR等新兴领域,目前还没有一款一开始就为此优化而打造的系统。
所以:从头开发一个新的平台,将这三者融合在一起,应该是它最终的目的(当然也不排除它就是一个RTOS,就是一个嵌入式系统,为VR/AR专门开发的,是我想太多)。

Google的新操作系统:从技术角度看Fuchsia

不过,Android目前已经是世界上用户量最多的系统,生态庞大;ChromeOS刚刚开始有好的表现,Google是不太可能遗弃这俩系统的,它也没办法遗弃,比如Android怎么遗弃?

我觉得它更像是一种:进化、融合。你看它的源代码,其实它的很多技术栈和Android以及ChromeOS是相通的,把以前零散在Google内部的很多项目(比如Skia,Mojo)现在集中在了一起。

所以:系统底层会焕然一新,android的app生态会得以保留和延续,java不再是唯一能写app的语言,chromeOS可能会被吸收,再辅助以系统层面对VR/AR的支持。

这个策略也符合Alphabet CFO 露丝·波拉特上任以来的风格:精简产品线,不要任性的乱花钱。
如果这个时候再开发一个物联网专用系统,之前已有Brillo,难到是要和Android,ChromeOS搓麻将不成?

| Google 的目的?

了解了 Fuchsia 这么多的信息,但是为什么 Google 要开发一个全新的 OS 和 Kernel?为了在智能手机和 PCs 上构建 Material Design 理念?最有可能的原因是,Google 希望 Fuchsia 有一天能代替 Chrome OS 和 Android,但也许 Google 也会像三星对待 Tizen OS 一样对待 Fuchsia。但也有可能只是谷歌的一次尝试。

Fuchsia就是个项目开发代号,未来这个系统真名会叫什么?

也许还是Fuchsia,也许是Android 8.0(9.0),也许是ChromeOS 2.0,也许是一个全新的名字。

什么时候这个新系统能替换(我觉得替换这个词不太准确)Android和ChromeOS?

我觉得它能很好的融合前两者已有的生态,新系统切换过程不会给用户以及第三方厂商带来明显的差异感(比如用户很多app用不了,厂商很多驱动不兼容,很多东西得重新适配,导致用户和厂商迟迟都不愿转到新系统,这样就失败了),也就是做到对用户和第三方厂商透明化,它就会成功替换后两者。

其实第一个提出“Convergence”概念的是Ubuntu,并且Ubuntu也最开始那么做了,只是进展的不太顺利,实力上和资金人力物力上Canonical还是不够,比如Mir一再的跳票。

(先说这么多吧,由于目前放出的文档相关信息很少,只是猜测)

历史上的今天:

  • 我的微信
  • 微信扫一扫
  • weinxin
  • 红包福利社
  • 微信扫一扫
  • weinxin
微信红包网

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: