写点什么

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

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

关注

评论

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

网络攻防学习笔记 Day107

穿过生命散发芬芳

网络安全 8月日更

介绍一个好用的网络工具traceroute命令

liuzhen007

8月日更

在线图片水印平铺工具

入门小站

工具

JavaScript 中 Array map() 方法

HoneyMoose

【设计模式】观察者模式

Andy阿辉

C# 编程 后端 设计模式 8月日更

分享 6 个实用的 Vue 技巧

devpoint

Vue Vue3 8月日更

《社会心理学》-怎么说服他人(整理稿)

箭上有毒

8月日更

OLAP 简介

LeifChen

OLAP 多维分析 8月日更

如何写好一篇自媒体文案:把握节奏引起共鸣

石头IT视角

JavaScript 中 Array map() 方法

HoneyMoose

MySQL 字段NOT NULL

一个大红包

8月日更

智能时代的信任口诀:让计算远离算计

脑极体

QDS07 Mysql 安装指定版本

耳东@Erdong

MySQL 8月日更 qds

Java 操作 Office:POI word之网络图片处理

程序员架构进阶

Java Apache POI 实战问题 8月日更

前端之算法(六)分而治之

Augus

算法 8月日更

架构实战营 - 模块五作业

李东旭

「架构实战营」

Elasticsearch 日志监控方案

Se7en

iOS开发:真机调试提示XXX, but code signing identity Apple Development问题

三掌柜

8月日更 8月

架构实战营 - 模块五作业

Julian Chu

架构实战营

也许你曾对怎么样才算认真做事情感到好奇,这本书给我三个启发,我想与你分享。

叶小鍵

你知道关闭页面时怎么向后台发送消息吗?

编程三昧

JavaScript 大前端 8月日更

模块5作业

Geek_35a345

前端基础一之HTML篇

ベ布小禅

8月日更

python--构造方法笔记

加里都好

JAVA对于文件IO操作的支持

卢卡多多

Java 文件 io 8月日更

极光开发者周刊【No.0813】

极光GPTBots-极光推送

架构实战营 模块五 作业

一雄

作业 架构实战营 模块五

Lodash 是什么

HoneyMoose

ElastricSearch第三弹之存储原理(详细+易懂)

阿Q说代码

ES 8月日更 flush Refresh translog

Linux之wget命令

入门小站

Linux

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