写点什么

Google Fuchsia 微内核 Zircon 先睹为快

  • 2018-04-23
  • 本文字数:988 字

    阅读完需:约 3 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

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 的 forkexec操作,而是使用 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 当前并未积极需求第三方的贡献。

查看英文原文: An Early Look at Zircon, Google Fuchsia New Microkernel

2018-04-23 19:006990
用户头像

发布了 391 篇内容, 共 139.7 次阅读, 收获喜欢 257 次。

关注

评论

发布
暂无评论
发现更多内容

记录-最骄傲的事(3)

将军-技术演讲力教练

Hoo虎符研究院 | 币海寻珠——2021年区块链投融大事记

区块链前沿News

区块链 虎符 Hoo虎符 Hoo 虎符交易所

什么是网络安全?网络安全威胁存在哪些?

喀拉峻

网络安全

聊聊今天 log4j 的大瓜

Justin

漏洞 闲聊 28天写作

中小型研发团队的一种考核思路

wood

团队管理 28天写作 研发考核

Eureka基础

李子捌

微服务 28天写作 12月日更

zookeeper的数据同步是如何完成的?

卢卡多多

zookeeper 28天写作 12月日更

.NET内存管理必备知识

喵叔

28天写作 12月日更

设计电商秒杀系统

Rabbit

在线将JS/JavaScript-Object转JSON工具

入门小站

工具

[Pulsar] Batch message的确认

Zike Yang

Apache Pulsar 12月日更

团队基建系列 - 组织知识传承 5 底层逻辑

搬砖的周狮傅

团队 团队成长

Helm 快速入门

xcbeyond

Helm 28天写作 12月日更

你不得不掌握的前端提交规范(git cz)

你好bk

JavaScript 前端 代码注释 代码规范 12月日更

解决:standard_init_linux.go:219: exec user process caused

liuzhen007

28天写作 12月日更

Prometheus Exporter (二十二)Infiniband Exporter

耳东@Erdong

Prometheus 28天写作 exporter 12月日更 Infiniband

升级你的高手秘籍,在找到规律的同时,你需要把时间整个明白。

叶小鍵

Spring AOP(二) 修饰者模式和JDK Proxy

程序员历小冰

spring Java、 28天写作 spring aop 12月日更

9.《重学 JAVA》-- 控制语句(一)

杨鹏Geek

Java 25 周年 28天写作 12月日更

hmily学习笔记

风翱

12月日更 Hmily

设计消息队列存储消息数据的 MySQL 表格

胡颖

盘点2021:一年读完的50本书

石云升

书单 年终总结 28天写作 12月日更 盘点2021

Maven进阶(四):Maven 常用命令

No Silver Bullet

maven 12月日更

我们一起,盘点 2021 十大技术领域的全部精彩

InfoQ写作社区官方

大数据 云原生 编程语言 话题讨论 2021年度技术盘点与展望

JavaScript 中8 个最佳电子邮件库

devpoint

JavaScript nodejs 12月日更 email pop3

Volatile 原理(二)

悟空聊架构

volatile 28天写作 可见性 悟空聊架构 12月日更

想象与实践的过程

Nydia

架构实战营第 4 期 -- 模块二作业

烈火干柴烛灭田边残月

架构实战营

当诗人遇到熟读2600亿中文参数的大模型

白洞计划

「如何从0到1实现一个基于vite的前端基础库👾」

速冻鱼

前端 Node 签约计划第二季 12月日更

RPC学习笔记

风翱

RPC 12月日更

Google Fuchsia微内核Zircon先睹为快_移动_Sergio De Simone_InfoQ精选文章