Google的新操作系统:从技术角度看Fuchsia
发表于2016-08-26
谷歌正在“悄悄”开发一款全新的操作系统,命名为“Fuchsia”。Google 在 Fuchsia 的 GitHub 主页上这样介绍 Fuchsia:“Pink + Purple == Fuchsia (a new Operating System)”。
Google 开发的操作系统都有个共同点,全都基于 Linux Kernel:Chrome OS, Android 和 Chromecasts。但是 Linux Kernel 并不是在所有的场景中都能起到很好的作用(影响性能或者造成其他影响),特别是嵌入式设备,类似汽车仪表盘和 GPS 单元。
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专门开发的,是我想太多)。
不过,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一再的跳票。
雷锋网注:本文主要作者叶秀兰,微信公众号开源派opensourcepie。本文由开源派授权发布于雷锋网(搜索“雷锋网”公众号关注),转载请联系授权并保留出处和作者,不得删减内容。