写点什么

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:007409
用户头像

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

关注

评论

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

〖产品思维训练白宝书 - 认知篇③〗- 产品思维 VS 技术思维

哈哥撩编程

#产品思维

聊聊业务高可用和应用高可用

老张

高可用 高可用架构 稳定性保障

一个 OpenTiny,Vue2 Vue3 都支持!

Kagol

typescript 开源 前端 Vue3 UI组件库

用户画像设计:揭秘成功产品背后的关键环节

L3C老司机

产品设计 数字化转型 产品管理 用户画像 用户画像分析

精彩抢先看!OceanBase在「数据技术嘉年华 2023」现场等你

OceanBase 数据库

数据库 oceanbase

华为云开源项目OpenTiny的TinyNG组件库应该如何使用?

英勇无比的消炎药

开源 前端 OpenTiny UI组件库

产品思维:微信是如何一步步打磨出完美产品的

石云升

读书感悟 产品思维

软件测试/测试开发丨玩游戏为什么会卡顿?

测试人

软件测试 游戏 自动化测试 卡顿 测试开发

大数据公司如何结合AI技术

MobTech袤博科技

Salesforce遇挑战:Marc Benioff的管理、代码老化、Slack后遗症

B Impact

如何让ChatGPT充当细致入微的Java代码优化工? | 得物技术

得物技术

ChatGPT

触手可及的 GPT —— LLaMA

Zilliz

Towhee ChatGPT LLM llama

对话阿里云致凡:社会视频化“狂飙”,倒逼视频云技术加速迭代

云布道师

平头哥

🎊这个 OpenTiny 开源项目的 CLI 可太牛了,两行命令创建一个美观大气的 Vue Admin 后台管理系统,有手就会,连我的设计师朋友都学会啦啦

Kagol

Vue3 cli 后台管理系统 vue admin

使用 LifseaOS 体验 ACK 千节点分钟级扩容

阿里巴巴云原生

阿里云 云原生 ACK

开心档之MySQL WHERE 子句

共享资源的保护:使用RWMutex的正确姿势

Jack

互联网坊间鄙视链,现在反过来了?

博文视点Broadview

AI日课@20230406:一次毫不费力的ChatGPT内部分享

无人之路

ChatGPT

神奇,前端不用redis也能实现消息队列——indexedDB

吴脑的键客

前端 js indexedDB

BroadcastReceiver牛刀小试

芯动大师

广播 broadcast broadcastreceiver

CNStack 服务网格:构建统一的服务治理和零信任安全能力

阿里巴巴云原生

阿里云 云原生 CNStack

“成年人”的数据库,既要又要也要!

OceanBase 数据库

数据库 oceanbase

Django笔记二之连接数据库、执行migrate数据结构更改操作

Hunter熊

Python django

月光宝盒(vivo流量录制回放平台)正式对外开源

vivo互联网技术

自动化测试 流量回放 流量录制

再立灯塔,我们为什么仍然期待魅族?

脑极体

魅族

艾瑞巴蒂看过来!OSSChat 上线:融合 CVP,试用通道已开放

Zilliz

开源 向量数据库 ChatGPT osschat

IO流中「线程」模型总结

Java 架构

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