-
Notifications
You must be signed in to change notification settings - Fork 378
zcore summer of code 2021
相关信息
- 注意: 为及时了解和指导同学的学习和实践情况并推动学生相互帮助,本次活动要求学生把每周学习实践的过程记录在自己在github的公开repo上。可参见每日学习实践的具体例子。
- 注意: 到北京启元实验室进行第二阶段为期两周的OS实习的同学要求提供健康证明,家长知情确认函,并签署安全责任协议书。北京启元实验室负责报销第二阶段OS实习的来回车票,提供食宿,提供每天100元~300不等(基于学生学历和实习过程)的第二阶段OS实习劳务费(两周最多14天,按天计,直接发到学生卡上)。无法到北京启元实验室进行第二阶段OS实习的同学可以申请远程实习。
通过第一阶段rCore Labs Tutorial-2021学习的的review的同学将获得北京启元实验室资助,到北京启元实验室进行第二阶段的zCore操作系统学研实践。
时间 8月2日-- 8月13日
继续线上进行zCore OS的实践。
主要是第二阶段的技术报告
- zCore结构和核心组件
- zCore系统调用
- zCore硬件移植与驱动开发
- zCore应用开发
@向勇
与同学交流选题
合影,实验室参观
中午就餐
晚上:聚餐和小活动
@王润基
主要内容:
- zCore 整体结构
- HAL 硬件抽象层的设计实现
- async Rust 原理和设计模式
- Rust 工程项目实践经验
@吴一凡
主要内容:
- 哪吒上的机器学习芯片与操作系统的接口和优化、python的SDK包、sipeed的调试器介绍(吴一凡处理)
- rCore Tutorial 在 哪吒 上的移植进展
@张译仁
主要内容:
- x86 底层设施:UEFI,串口、键盘、图形,段描述符,中断控制
- 驱动开发方式
- zCore 硬件移植
@陈兴
主要内容:
- Fuchsia 和 Zircon 整体结构
- Zircon 内核对象简介
- zCore 中内核对象和系统调用的设计模式
- 对Linux和Zircon系统调用支持的实例分析
@贾越凯
主要内容:
- RVM 与 zCore Hypervisor
@肖络元
主要内容:
- 基于协程的异步调度机制
目前设置了5个项目,学生可选择参加下面的项目,指导老师制定以周为单位的项目研究计划。
-
项目标题:zCore 的文档与单元测试完善
-
项目描述:zCore 是用 Rust 重新实现的 Zircon 微内核。目前我们已经按照官方文档的描述,实现了诸多 Zircon 内核对象,支持运行 shell 等基础程序。然而,随着后期开发进程的加快,大量代码缺少文档描述,并且没有实现单元测试,只能在 QEMU 中运行用户程序以检验代码正确性。本项目的目标是完善 zCore 的文档及单元测试,使其成为一个高质量的 Rust 社区项目。
-
项目难度:低
-
项目社区导师:王润基
-
导师联系方式:wangrunji0408 AT 163.com
-
项目产出要求:
-
补充完善 zCore 各模块的代码文档。
目标是通过
#![deny(missing_docs)]
编译,并且能够让开发者通过阅读文档,快速理解 zCore 的代码结构和各部分功能。 -
参考 Fuchsia 官方文档及测试代码,为 zCore 中的内核对象补充单元测试。
目标让
zircon-object
模块的测试覆盖率提高到 90% 以上。 -
(可选)在 CI 中支持运行集成测试。 目标是最大化整体的测试覆盖率。
-
(可选)在zCore中添加zircon/linux的syscall。 目标:完善添加zCore内核功能,让zCore通过更多的zircon tests(基于zircon的coretest)或Linux tests(基于musl libc的libc test)或相关应用
-
-
项目技术要求:
- 具备一定的 Rust 语言基础,能看懂并模仿现有代码即可
- 熟悉操作系统原理与简易实现
- 具有基础英文阅读和写作能力
-
相关的开源软件仓库列表:
- https://github.com/rcore-os/zCore (zCore 仓库)
- https://rcore-os.github.io/zCore/zircon_object (zCore 代码文档)
- https://fuchsia.dev/fuchsia-src/reference (Zircon 官方文档)
-
项目标题:zCore 的哪吒开发板支持
-
项目描述:zCore 是用 Rust 重新实现的 Zircon 微内核。官方的 Zircon 支持 x86_64 和 ARM64 两种指令集,并且曾经支持过树莓派平台(现在不行了)。目前我们的实现只支持 x86_64,因此希望将其移植到基于RISC-V64 CPU的哪吒开发板上运行。好消息是,zCore 基本支持 RISC-V64的QEMU模拟环境,因此有现成的代码可供参考和移植。
-
项目难度:中
-
项目社区导师:吴一帆
-
导师联系方式:wu-yf16 AT mails.tsinghua.edu.cn
-
项目产出要求:
- 能够在哪吒开发板上运行 zCore
- (可选)能够在 Linux 系统上运行 zCore libos 这个相对比较简单,因为基于 Linux host OS,不会涉及太多指令级别的改动。可以作为入门练手。
-
项目技术要求:
- 熟悉 Rust 语言
- 熟悉 RISC-V64 指令集,或做过其它平台的底层移植工作
- 熟悉哪吒开发板的开发经验
-
相关的开源软件仓库列表:
- 项目标题:zCore 的树莓派4开发板支持
- 项目描述:zCore 是用 Rust 重新实现的 Zircon 微内核。官方的 Zircon 支持 x86_64 和 ARM64 两种指令集,并且曾经支持过树莓派平台(现在不行了)。目前我们的实现只支持 x86_64,因此希望将其移植到 ARM64 平台,并能够在树莓派4 上运行。好消息是,zCore 的前身 rCore 支持 ARM64 和树莓派3,因此有现成的代码可供参考和移植。
- 项目难度:中
- 项目社区导师:贾越凯
- 导师联系方式:equation618 AT gmail.com
- 项目产出要求:
-
能够在树莓派4 上运行 zCore
-
(可选)能够在 ARM64 Linux 系统上运行 zCore libos
这个相对比较简单,因为基于 Linux host OS,不会涉及太多指令级别的改动。可以作为入门练手。
-
(可选)顺便把 rCore 也适配到树莓派4 吧
-
- 项目技术要求:
- 熟悉 Rust 语言
- 熟悉 ARM64 指令集,或做过其它平台的底层移植工作
- 熟悉树莓派,或有其它 ARM 板子的开发经验
- 相关的开源软件仓库列表:
- https://github.com/rcore-os/zCore (zCore 仓库)
- https://github.com/rcore-os/rCore (rCore 仓库,支持树莓派3B)
- https://github.com/rust-embedded/rust-raspberrypi-OS-tutorials (树莓派上的 Rust OS 教程)
- 项目标题:rCore 到 zCore 的功能迁移
- 项目描述:rCore 是用 Rust 语言实现的兼容 Linux 内核。它支持四种指令集,能够运行比较丰富的应用程序。但是随着时间的积累,rCore 的代码越堆越多,很多内部实现缺乏推敲,需要优化和重构。后来我们从头开始实现了 zCore 项目,采用了更加清晰的分层结构,同时复用 Zircon 微内核的内核对象实现了 Linux 内核的部分功能(如内存管理和进程管理)。目前 zCore 中的 linux 模块已经能够运行基础的 Busybox 等小程序,但仍有大量原本 rCore 支持的功能没有实现。本项目希望将 rCore 的功能迁移到 zCore 当中,并借此机会进行重构。其中一些代码可以直接搬过来,剩下的可能需要调整适配(例如涉及到 async),还有一些可以直接基于 Zircon 内核对象进行实现(例如 epoll)。
- 项目难度:中
- 项目社区导师:张译仁
- 导师联系方式:[email protected]
- 项目产出要求:
- 能够在 zCore 上运行 rCore 支持的 Linux 程序:GCC,Nginx,Rustc 等
- 对新迁移过来的代码,要求补充代码文档和必要的单元测试
- 项目技术要求:
- 熟悉 Rust 语言
- 熟悉 Linux 系统调用
- 相关的开源软件仓库列表:
- https://github.com/rcore-os/zCore (zCore 仓库)
- https://github.com/rcore-os/rCore (rCore 仓库)
- 项目标题:zCore异步调度机制
- 项目描述:在zCore中改进优化当前的异步调度机制,在驱动层,内核层和应用层实现一致的协程调度。
- 项目难度:中
- 项目社区导师:王润基
- 导师联系方式:wangrunji0408 AT 163.com
- 项目产出要求:
- 能够在 zCore 实现异步协程机制
- 要求补充代码文档和必要的单元测试
- 项目技术要求:
- 熟悉 Rust 语言
- 熟悉 IO-Uring机制
- 相关的开源软件仓库列表:
- https://github.com/rcore-os/zCore (zCore 仓库)
- 项目标题:zCore 内核级std lib支持
- 项目描述:把std crates运行在zCore的内核态。
- 项目难度:中
- 项目社区导师::张译仁
- 导师联系方式:[email protected]
- 项目产出要求:
- 能够让std crates在 zCore 的内核态正常运行
- 要求补充代码文档和必要的单元测试
- 项目技术要求:
- 熟悉 Rust 语言
- 相关的开源软件仓库列表:
- https://github.com/rcore-os/zCore (zCore 仓库)
- 项目标题:zCore 的libos支持
- 项目描述:zCore运行在用户态
- 项目难度:中
- 项目社区导师::张译仁
- 导师联系方式:[email protected]
- 项目产出要求:
- 参考user-mode linux的实现方式实现zCore在用户态以linux app方式运行
- 要求补充代码文档和必要的单元测试
- 项目技术要求:
- 熟悉 Rust 语言
- 相关的开源软件仓库列表:
- https://github.com/rcore-os/zCore (zCore 仓库)
- 项目标题:zCore 的usr-mode interrupt支持
- 项目描述:zCore支持在用户态响应中断
- 项目难度:中
- 项目社区导师::张译仁
- 导师联系方式:[email protected]
- 项目产出要求:
- 参考RISC-V的N Spec(用户态中断规范),在有N Spec的RISC-V(模拟器或FPGA)上让zCore实现在用户态响应中断的支持
- 要求补充代码文档和必要的单元测试
- 项目技术要求:
- 熟悉 Rust 语言
- 相关的开源软件仓库列表:
- https://github.com/rcore-os/zCore (zCore 仓库)
由技术指导负责人与同学协商确定分组方案
- 王润基
- 潘庆霖
- 刘畅
- 刘馨 微信号 miqi