关于Fuchsia OS的一些思考

fuchsia

去年年中的时候,就听说了Fuchsia。不过当时也没特别关注,毕竟Google对OS的执念很重,一不开心就启动一个新的OS项目。这几天官方公布了Fuchsia的一部分文档,这个文档目前还不太全面,不过也能粗略了解一下Fuchsia吧!限于个人水平有限,博文不免会有错误,还望多多指教。

一、“瞎掰向”分析

对于顶级IT公司来说,“操作系统”一直是一个独特的东西。从正面看,操作系统意味着生态系统、用户粘性。所以OS成就了很多公司,Solaris之于Sun,Windows之于微软。然而成功背后总有很多失败,而做OS的风险非常之大,强如微软和Facebook,都在移动操作系统领域一败涂地。

Google作为一个后来者,Andriod目前在移动市场的份额已经非常成功了。即使在美国,iOS的市场份额也只有46%。由于Fuchsia跨平台的特性,也许应该把桌面和物联网考虑在内。虽然Google对桌面系统(Chrome OS)多年不离不弃、痴心不改,但是微软最近连Windows部门都拆掉了,桌面真的那么值得去追求吗?我觉得不然。

桌面已经不再性感了,而且也并不好入侵。OS的用户粘性和生态决定了这其实是一个有壁垒的市场。跨平台OS无疑是一个看起来非常有希望的解决方案,微软和Google都是这样想的。充分利用己方市场广阔的用户资源,然后向目标系统提供一致的用户体验和强大的应用生态,这确实是一个非常美好的想法(看看Linux在桌面端和移动端挣扎的表现,就知道“白手起家”会有多难)。不过这无疑是一件非常困难的事情,技术上的风险非常之大。我的判断是,在桌面做一个跨平台操作系统,对Google而言是一件失败不亏,成功血赚的事情。

那么物联网呢?物联网是智能化的必然需求,这块大蛋糕很多公司都虎视眈眈。但物联网低处理、碎片化的硬件环境,对OS有着与桌面甚至移动端不同的要求。在物联网,Google其实已经布局了Android Things。我没有怎么了解Android Things,但毕竟是和Android同源的,性能、功耗和弹性在IOT领域应该会比较吃力。所以对Google而言,IOT不出意外是需要一个新的OS的。倘若这个新的OS可以和Android基于同一个微内核,无疑是一件好事。因为在操作系统的结构上,Android Framework其实属于一个上层框架。微内核OS换掉Linux在技术上是可行的。

二、“技术”向分析

Android是基于Linux的,所以存在GPL协议的风险。而且Linux其实也快30岁了,不能算是一个时髦的OS了,存在不少缺陷。比如Linux并不算是一个合格的“微内核”,结构已经比较臃肿了;此外,Linux在图形方面吃力的表现也一直是个痛点。参考Fuchsia的文档,Fuchsia基本就是对症下药——Linux的病症。

模块化、微内核的设计

Fuchsia的口号是——一个模块化、基于能力的操作系统。“微内核”其实是老调常谈了,“凡是可以在User space完成的工作,最好都在User space完成”。从最近年的系统技术发展来看,能在User space完成的事情似乎越来越多了。或者换一句狠一点的话,Kernel space很多活干的并不好,而且还不好改进升级。一个比较好的例子就是QUIC了,多少年来大家对TCP都是非常信任的。然而QUIC通过在User space的优化,基于UDP实现了比TCP更加高效的通信框架,而且这个框架还可以很方便的升级(相比于内核实现)。此外,还有BBR拥塞控制等等例子也能证明内核的提升空间其实挺大的。

在Fuchsia中,文件系统是完全存在于用户空间的。filesystem service负责整个文件系统,应用程序(客户端)通过RPC与filesystem service通信,完成文件操作。文件系统格式等等完全放在用户空间,操作系统只需要提供存储设备的驱动即可(这种设计有点像分布式存储系统中的块存储设备)。相比于Linux的VFS,这种方式明显更加弹性。举例来说,在Fuchsia中改变文件系统的支持,都不需要重启系统。

Fuchsia的网络栈也有不少改动,以太网的文档还没出来,我这里贴一个WLAN的图展示一下网络栈框架。

image

可以明显看出,网络栈的实现也放在了用户空间。

图像系统

Fuchsia的图形系统基于Vulkan,完全不存在openGL这种历史包袱。驱动兼容性更好,而且跨平台支持也好,对用户和开发者都更友好。

总体来说,我感觉Fuchsia的设计理念还是比较时髦的。但是Google不可能放弃Android去大力推Fuchsia的,这无疑是自毁长城。比较合理的方式鼓励一种跨平台的开发方式比如Flutter,以帮助新项目的开发者逐渐转移到新的OS上。同时,把Android Framework移植到Fuchsia上,个人感觉这在技术上是可行的,当然的确是有很大的工作量。而Fuchsia模块化的设计方式,弹性非常足,应该可以应付物联网下的多数应用场景。

目前就先写这么多吧!Fuchsia的文档还很不全面,其他部分的文档也还没有仔细研究。

已有6条评论 发表评论

  1. 1234 /

    多日未见树哥的更新啊

  2. 荔乡根子GenZi.Win /

    Android中国用户基数大,却什么都没捞到。

  3. Eric /

    比如Linux并不算是一个合格的“微内核”,结构已经比较臃肿了?Linux从设计之初就是宏内核,不是微内核,著名的微内核和宏内核论战:https://en.wikipedia.org/wiki/Tanenbaum_Torvalds_debate

    1. swliu / 本文作者

      嗯,linux确实算宏内核,这里确实是有问题,几年没怎么看linux了。

  4. Eric /

    倘若这个新的OS可以和Android基于同一个微内核,无疑是一件好事。
    还有这句话,Android不是基于微内核。

    1. swliu / 本文作者

      这里可能是你没有理解我的意思,Android主要是framework。而且我说的是假设,并不是现状如何。

发表评论