财讯:谷歌取代安卓的操作系统迟迟未发布,清华学生“山寨”了一个
本篇文章2813字,读完约7分钟
机器的心
机心报道
机器的心
谷歌的新一代操作系统还在进行中,清华率先推出了“山寨”版。
在移动操作系统市场上,安卓和ios是最强大的两个领导者。
其实早些年,谷歌就开始开发一种叫fuchisia的新操作系统。 与安卓不同,fuchisia基于zircon而不是linux内核。 业内人士推测,该系统可能成为安卓的强大替代者。
根据当初的推测,谷歌有可能在今年的i/o开发者会议上发表fuchsia os开发测试版。 但是由于疫情的影响,本年度的i/o大会被取消了,fuchisia也失去了消息。
但是问题不大! 明明拿到了开源文件,为什么还要等官方发表呢?
谷歌I/o大会倒计时100天前,来自清华大学的团队开始了神秘的项目。 试图用rust语言重新实现fuchsia的微内核zircon。
经过100天的秘密开发,他们在官方发表前就出了zircon核心。 现在可以正常执行外壳等基础程序,总代码量只有1万行左右。
这个“山寨”版的zircon名是zcore。 zcore继承和改善了在rcore项目中用rust语言创建os的实践经验,开发者希望将其定位为继rcore之后的下一代rust os。
项目地址: github/rcore-os/zcore
据作者介绍,这个项目是清华大学计算机系王润基等同学合作完成的。 他们在rust os方面的工作已经进行了两年,最初只是课程项目,后来被正式课改项目收购,后来被作为毕业设计项目。
现在这个项目继续由他们和参加操作系统课程设计的同学们开发,下一步的目标是支持驱动程序,真正成为实用的系统。
zcore后面的家人
在说zcore之前,有必要知道该民的“ucore”和“rcore”。
“ucore”是清华大学计算机系副教授陈瑜写的操作系统,基于MIT Frans Kaas Hoek等人2006年写的操作系统xv6的设计,该操作系统也被称为“麻将”
“rcore”是用rust重新实现的linux内核,出生于年,现在在清华计算机系的OS教育实验中被试验应用。
zcore是rcore的后辈,和rcore有“血缘关系”。 其实zcore不是独立的操作系统。 那个仓库里藏着一个小rcore。 一个指令可以快速调用rcore。
这一点的隐藏好处是,基于zircon提供的内核中最重要的内存管理和过程管理功能,将linux作为宏内核的其他功能(例如文件系统)进行补充,将linux系统调用接口排除在外
zcore的特点
总结起来,zcore有以下优点:
第一个完整的山村zircon内核
通过使用rust创建,实现了简化和清晰的级别。
支持客户状态的开发、测试和运行
一是内核采用async机制
至少从现在来看,zcore是第一个完整的山寨zircon内核,也是用rust语言重新实现的第一个zircon微内核。 这在内核状态下运行,向外部提供与zircon完全相同的系统调用。 这是因为您可以运行本机fuchsia客户端程序。
在qemu上运行zcore。
根据项目作者的介绍,zcore还可以创建正常客户进程在linux或macos上运行的客户的状态。 此模式通常称为libos或user-mode os操作系统,不需要安装qemu模拟器,只需安装rust官方工具链即可编译运行体验zcore。
gitclonegithub/r core-OS/zcorecdzcoregitlfspullcargorun-- release-p zircon-loader pre built/zircon
由此,实现了开发者在顾客状态下开发、在gdb上与ide调试、在cargo test上运行单元测试、测量统计测试的目标率等功能,迄今为止的内核开发无法实现。
zcore的整体架构如下图所示。 首先,为了使zcore能够在内核状态和客户端状态下工作,项目制作者在最下部设计硬件抽象层( hal ),封装内核依赖的基础操作,在裸金属环境和linux/macos环境下分别
hal上面的核心是zircon-object,即zircon内核对象,包括所有内核机制的实现。
对象层上面有系统调用层,负责将内核对象的功能封装为zircon syscall abi,暴露给客户的流程。
另外,上面是整个操作系统的顶层模块,它完成了系统初始化和第一个客户流程的加载,组装了所有模块,生成了可执行文件。
经过粗略的统计,现在各模块的代码量大致如下。
图源:知乎@王润基。
汇总每个模块的代码量约为12300行(采用loc工具,仅汇总code )。 这也是该系统的“紧凑”,1w以上即可实现2个os,同时以2种模式行驶。
作者说,这是因为zircon内核本身足够简单(因为客户端程序相对足够多且复杂),而linux端也最大限度地重复使用了zircon内核对象的功能。 “当然这里也有作弊。 因为有些功能是作为外部依赖引入的,没有合并(例如,rcore的文件系统部分)。 "。
据作者介绍,zcore与用10万行CR+写的公式zircon相比,1万行rust可以实现大部分核心功能。
当然,关于rust语言的unsafe代码块问题,作者说:“hal上大约有20个unsafe,其中大部分用于在两个对象之间取weak参照的操作,剩下的也容易验证正确性。 hal下面多是unsafe,离底层硬件很近,所以几乎到处都是unsafe,和C没什么区别。 但幸好hal代码还很少,不过几百行。 "。
除此之外,zcore也首次在内核中引入了async无堆栈协调机制。 利益方面,空之间的占有少,上下文切换的开销小,同时量和吞吐量高,但不能合作式、抢占,有可能给系统实时性带来课题。 关于两者之间的对应,有待进一步的测试和分解。
"麻雀虽小,五脏俱全. "
zcore雀很小,但五脏俱全。 现在可以在进入shell的基础上运行各种小程序。 当然是微核,所以zircon在进入壳之前经过很长一段时间,userboot ->; bootsvc ->; component _ manager→driver _ manager启动各种服务进程,也被用于各种系统机制。
zircon一共是160多个系统调用,为了运行到shell,开发者实现了其中的65个。
fuchsia公式还提供了许多客户状态测试流程,大大提高了测试和完整内核的效率。 现在他们能通过大约一半的测试,剩下的还完整。
在zcore测试状态表中,github/r core-OS/z core/wiki/status:- core-tests出现在越来越多的副本中。
参考链接: zhuanlan.zhihu/p/137733625
本文为机心报道,转载请联系本公众号获得授权。
原题:“谷歌还没有发布代替安卓的操作系统。 一万行rust代码,清华学生“山寨”合二为一”
阅读原文。
标题:财讯:谷歌取代安卓的操作系统迟迟未发布,清华学生“山寨”了一个
地址:http://www.mnscw.cn/syxx/9801.html
免责声明:民生财经杂志网致力于提供权威、全面、专业、及时的财经资讯,的部分内容转载于网络,不为其真实性负责,只为传播网络信息为目的,非商业用途,如有异议请及时联系btr2031@163.com,民生财经杂志网将予以删除。