Google Fuchsia微内核Zircon先睹为快
Google发布了Fuchsia的官方文档。Fuchsia是Google针对IoT和移动设备新推出的一种操作系统,它基于称为“Zircon”的全新微内核。
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)。
Zirocn并不支持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当前并未积极需求第三方的贡献。
本文文字及图片出自 InfoQ
你也许感兴趣的:
- 曾与 HarmonyOS 一较高下的 Fuchsia,再失利!
- Fuchsia 的 Rust 代码占比超 50%
- Android被发现添加Fuchsia SDK和Fuchsia设备支持
- 新提交记录暗示:Fuchsia 要支持 Java
- 华为测试谷歌新操作系统Fuchsia:麒麟970已能启动
- 福布斯:为什么从现在开始你应该关注谷歌的 Flutter 和 Fuchsia?
- 谷歌组织逾100人开发新系统Fuchsia: 欲5年内取代Android
- Fuchsia 操作系统将支持运行 Linux 应用程序
- 聊聊谷歌的新系统 Fuchsia,关于它的消息、传言和未来
- 如何看待 Google 的新操作系统 Fuchsia?
你对本文的反应是: