【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

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

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

关注

评论

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

关于查尔斯-斯特里克兰

黄大路

提升认知 小说 个人提升 认识自己

产品经理中必会SQL技能,相关内容研发可不予支持

韩超

MySQL sql 产品经理

ROS与OpenAI结合使用教程(概览)

辣么大

数据库连接池的大小

Java收录阁

数据库

腊鸡与猴儿

黄大路

人生 小说

关于职能型团队管理一些总结

黄大路

项目管理 管理

使用人工智能技术改进面试机器人

陆道峰

人工智能 学习 聊天机器人

来了来了,2020 首场 Meetup ,可!

Apache Flink

大数据 flink 流计算 实时计算

如何打造个人品牌?

石云升

个人 品牌

游戏夜读 | 联网才能玩的单机

game1night

理解雾计算(Fog Computing)与边缘计算(Edge Computing)

老任物联网杂谈

雾计算 Fog Computing 边缘计算 Edge Computing

回"疫"录(11):别让善良寒了心

小天同学

疫情 回忆录 现实纪录 纪实

读 Go Scheduler 有感:给产品经理的建议

Ya

程序员 产品经理 操作系统 OS Scheduler

高仿瑞幸小程序 04 小程序的全局数据

曾伟@喵先森

小程序 微信小程序 大前端

以不变应万变——复杂系统回归测试新思路

刘华Kenneth

DevOps 敏捷 测试 单体系统 复杂

做程序员有未来吗

山楂大卷

程序员 个人成长 职业规划 技术人

面试官浅析程序员面试过程中的二三事

joe

互联网 个人成长 方法 职场 文化

真实 Java 笔试题

旭霁

面试

DevOps怎样影响开发运维人员

脚动两轮男之漂流小王子

DevOps

程序员的晚餐 | 5月9日 炖蹄髈

清远

程序员

拜托,别再问我Zookeeper如何实现分布式锁了!

不才陈某

zookeeper 分布式 后端 分布式锁

直播电商行业一些看法

黄大路

互联网 商业 商业模式 商业价值 行业资讯

Java 环境配置与编辑器使用

旭霁

Java IDEA

Elasticsearch原理讲透了!

for

lucene elasticsearch 倒排索引 分布式搜索引擎 数据的分片和备份

一个 UED 团队的自我修养

oldj

团队管理 UED

向上管理第一项:路径P背后的目标B

kimmking

管理

Redis 命令执行过程(上)

程序员历小冰

redis 源码分析

Java并发编程--ReentrantLock

Java收录阁

并发编程

数据挖掘|cross_val_score交叉验证使用

黄大路

Python 数据挖掘 学习 数据分析

如何快速对应用系统做一个360度画像诊断?

姜戈

Java 运维 多线程 网络 内存

Scrum精髓 - Scrum的核心到底是什么

Bob Jiang

Scrum 敏捷 Scrum精髓 敏捷精髓

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