微信号:frontshow

介绍:InfoQ大前端技术社群:囊括前端、移动、Node全栈一线技术,紧跟业界发展步伐。

Google Fuchsia微内核Zircon先睹为快

2018-04-24 18:34 盖磊 译
作者| Sergio De Simone
编译| 盖磊 、覃云
日前,Google 发布了名为“the book”的 Fuchsia 官方文档。Fuchsia 是 Google 针对 IoT 和移动设备新推出的一种操作系统,它基于名为“Zircon”的全新微内核。
Fuchsia 是什么?

Google Fuchsia 的源码于 2016 年 8 月首次在 GitHub 上出现,当时 Google 没有任何的官方说明,但其源码显示其能够支持跨平台开发,不仅支持手机和 PC,还包括汽车媒体系统、家具物联等其他嵌入式设备。

与之前的 Android 相同,Fuchsia 是一款开源且免费的系统。但是与 Chrome、Android 不同的是,Fuchsia 不是基于 Linux,而是基于 Google 自己的新微内核,名为 Zircon

关于 Zirco

Zircon 由一位名叫 Travis Geiselbrecht 的程序员开发,他还创建了支持 Haiku OS 的 NewOS 内核。Zircon 使用 C++ 编写,在组成上包括一个微内核,以及一组用户空间服务、驱动和软件库,可处理系统启动、进程加载等一些经典内核任务。Zircon 的系统调用除了 wait_one, wait_many, port_wait and sleep 之外,一般是非阻塞的。

Zircon 支持在 Linux 或 macOS 上构建,进而创建一个可引导的 bootfs 镜像。Zircon 最初是 LK 的一个分支。LK 是 Google 为嵌入式系统开发的另一种内核,意在实现对 FreeRTOS 或 ThreadX 的开源替代。但是 Zircon 没有 LK 那么严格的需求,因为它是设计运行在具有充足内存和高速处理器的现代设备上。

Zircon 可管理的资源包括:处理时间、内存、I/O、中断、信号与等待等。用户区域(user land)通过句柄(handle)使用资源,句柄有权利(rights)关联到资源,并传递复制、传递、读取、写入、执行等行动的执行权限。Zircon 中的驱动实现为 ELF 软件库,并加载到进程中。驱动管理进程 devmgr 追踪所有的驱动和设备情况,管理对驱动的发现,并管控对设备的访问。设备可以使用 PCI protocol、USB protocol 等 C ABI 实现协议(Protocol)。

Zircon 并不支持 Unix 风格的信号,也没有提供任何可直接实现的机制。它支持句柄上的等待操作。等待包括一系列不同的信号状态,例如写入就绪、运行、停止等。同样,Zircon 不具有类似于 Unix 的 fork 和 exec 操作,而是使用 launchpad 软件库创建进程。下面给出了使用 launchpad 创建进程的一个示例代码段:


   launchpad_t* lp;
   launchpad_create(job, "processname", &lp);
   launchpad_load_from_file(lp, argv[0]);
   launchpad_set_args(lp, argc, argv);
   launchpad_set_environ(lp, env);
//   << 此处可添加其它 launchpad_*() 调用,实现建立初始 fds、句柄等。 >>
   zx_handle_t proc;
   const char* errmsg;
   zx_status_t status = launchpad_go(lp, &proc, &errmsg);
   if (status < 0)
       printf("launchpad failed: %s: %d\n", errmsg, status);

要全面了解 Zircon,建议阅读全部文档。Zircon 依然处于繁重的开发过程中,但是 Google 当前并未积极需求第三方的贡献。

Fuchsia 的未来之路

正如上文所说,Fuchsia 能够嵌入家具、汽车等硬件系统,这是 Chrome、Android 目前无法做到的,可以看出,Fuchsia 是 Google 从 PC 端、手机端过渡到现在物联网领域的一项战略。在很多人看来,Fuchsia 是 Google 统一 Chrome、Android 的一项重要举措,它把移动、PC 和物联网围成一个闭环的 Google 生态,像苹果那样,能从根本上解决碎片化的问题。

据了解,Fuchsia 还将支持 Dart 和 Flutter,Dart 是 Google 开发脚本语言,现在已经用于 Google 内部的项目中,而 Flutter 是 Dart 中构建跨平台、高性能移动应用程序的工具,虽然 Flutter 目前仍处于测试阶段,但从 Google 这两年的动作来看,Flutter 或许也是 Google Fuchsia 战略计划中的一部分。所以,作为开发者,时刻保持积极的学习态度,跟上技术的发展潮流,其他的,等待时间告诉我们答案。

  文档链接

https://fuchsia.googlesource.com/docs/+/master/the-book/

前端之巅

「前端之巅」是 InfoQ 旗下关注大前端技术的垂直社群。紧跟时代潮流,共享一线技术,欢迎关注。

  活动推荐

PWA、Web 框架、UI 与动画、Node... 大前端的下一站在哪里?前端工程师的价值和成长路径是什么?GMTC2018 上,来自 Google、Facebook、BAT 等 60+ 国内外一线前端大牛,将与你面对面探讨大前端领域最新技术趋势和实践,想要升职加薪就快来吧!扫描下方二维码或点击“阅读原文”了解更多大会详情!

目前大会 8 折热销中,团购更优惠,购票咨询:18514549229(同微信)

 
前端之巅 更多文章 前端每周清单:Redux 4.0,用Kotlin重构Java应用 利用深度学习进行前端自动化开发 专访死马:为什么说Egg.js是企业级Node框架 前端每周清单:Node.js 10,npm 6提速17倍,如何设计大型JavaScript项目? 微服务下使用GraphQL构建BFF的实践
猜您喜欢 携程无线APM平台 - 如何实现全球端到端性能监控 陕西高考作文,一则“二战”故事绊倒了你? 在Visual Studio Code中开发Office Add-in Docker&Kubernetes技术沙龙第二期精彩回顾 胆小勿入|今年万圣节你怎么过?群魔乱舞的一个人摇摆