Post Views http://intheworld.win/wordpress/wp-admin/options-general.php?page=post_views = 6
去年年中的时候, 就听说了 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 的图展示一下网络栈框架.
可以明显看出, 网络栈的实现也放在了用户空间.
图像系统
Fuchsia 的图形系统基于 Vulkan, 完全不存在 openGL 这种历史包袱. 驱动兼容性更好, 而且跨平台支持也好, 对用户和开发者都更友好.
总体来说, 我感觉 Fuchsia 的设计理念还是比较时髦的. 但是 Google 不可能放弃 Android 去大力推 Fuchsia 的, 这无疑是自毁长城. 比较合理的方式鼓励一种跨平台的开发方式比如 Flutter, 以帮助新项目的开发者逐渐转移到新的 OS 上. 同时, 把 Android Framework 移植到 Fuchsia 上, 个人感觉这在技术上是可行的, 当然的确是有很大的工作量. 而 Fuchsia 模块化的设计方式, 弹性非常足, 应该可以应付物联网下的多数应用场景.
目前就先写这么多吧! Fuchsia 的文档还很不全面, 其他部分的文档也还没有仔细研究.
来源: https://juejin.im/entry/5ad22f4cf265da23870f43fd