Files
rust-based-os-comp2022/stage2-sched.md
2022-07-27 12:10:59 +08:00

11 KiB
Raw Blame History

2022年开源操作系统训练营第二阶段

相关信息

日程第一周zCore讲解与学习7天

  • zCore结构和核心组件
  • zCore系统调用
  • zCore硬件移植与驱动开发
  • zCore应用开发

日程:第二~第四周rCore/zCore研究项目 (34天)

目前设置了多个项目,学生可选择参加下面的项目,指导老师制定以周为单位的项目研究计划。

rCore-Tutorial-v3 进一步进阶/扩展

  1. 项目标题rCore-Tutorial-v3 进一步扩展

  2. 项目描述rCore-Tutorial-v3 的一个重要目标是以简洁的设计实现对应到操作系统的核心知识点上所以还有很多可以扩展的地方。我们希望通过设计一个一个相对独立的实验来展现操作系统的核心设计思想在操作系统实现与操作系统原理之间建立桥梁。学生设计实现新OS功能后学生的系统能力也随之提高。

  3. 项目难度:低/中 适合完成了lab1-5且希望能够一小步一小步地继续提升自己OS编程能力/系统能力的同学)

  4. 项目社区导师:陈渝 github id: chyyuu weichat id: chyyuu

  5. 项目社区导师:吴一凡 github id: wyfcyx weichat id: yifanwu1998

  6. 项目社区导师:许善朴 github id: xushanpu123 weichat id: bitmeet520

  7. 项目产出要求:

    • 补充完善 rCore-Tutorial-v3
  8. 项目技术要求:

    • 具备一定的 Rust 语言基础,能看懂并模仿现有代码即可
    • 熟悉操作系统原理与简易实现
    • 具有基础英文阅读和写作能力
  9. 相关的开源软件仓库列表:

  1. 一个月可行的进阶步骤(当然也是一种挑战) 内核支持中断响应 --> 内核支持 读取设备树支持virtio外设支持串口外设 --> 内核支持多核结构 --> 内核支持Linux syscall即支持Linux应用

操作系统课程的有趣大实验

  1. 项目标题:操作系统课程的有趣大实验

  2. 项目描述:操作系统课程的大实验的重要目标基于学生兴趣来开展各种操作系统技术的探索,拓展学生的视野,培养未来操作系统人才。

  3. 项目难度:中/高 适合完成了lab1-5并希望能够较快进入更实际一些的OS能力训练或做OS方向研究的同学

  4. 项目社区导师:向勇 github id: xyongcn weichat id: xyongcn

  5. 项目产出要求:

    • 各种大实验的设计与实现
  6. 项目技术要求:

    • 具备一定的 Rust 语言基础,能看懂并模仿现有代码即可
    • 熟悉操作系统原理与简易实现
    • 具有基础英文阅读和写作能力
  7. 2022春季OS课相关大实验的开源软件仓库列表(鼓励进一步改进和扩展)

zCore 的文档与单元测试完善

  1. 项目标题zCore 的文档与单元测试完善

  2. 项目描述zCore 是用 Rust 实现的支持协程/异步等新机制的操作系统目前zCore的实现已经初步支持 x86_64/RISC-V 64/AArch64。然而随着后期开发进程的加快大量代码缺少文档描述并且没有实现单元测试只能在 QEMU 中运行用户程序以检验代码正确性。本项目的目标是完善 zCore 的文档及单元测试,使其成为一个高质量的 Rust 社区项目。

  3. 项目难度:低 适合完成了lab1-5并希望在OS领域找到一份测试/研发工作,或提升软件工程能力的同学)

  4. 项目社区导师:石振兴 github id: shzhxh weichat id: szx-bj

  5. 项目社区导师:董峰 github id: workerwork weichat id: Mr_dong-feng

  6. 项目产出要求:

    • 补充完善 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或相关应用

  7. 项目技术要求:

    • 具备一定的 Rust 语言基础,能看懂并模仿现有代码即可
    • 熟悉操作系统原理与简易实现
    • 具有基础英文阅读和写作能力
  8. 相关的开源软件仓库列表:

zCore 的星光/SiFive/树莓派等开发板和外设支持

  1. 项目标题zCore 的星光/SiFive开发板支持

  2. 项目描述zCore 是用 Rust 实现的支持协程/异步等新机制的操作系统目前zCore的实现已经初步支持 x86_64/RISC-V 64/AArch64。zCore需要继续完善相关驱动和系统调用。

  3. 项目难度适合完成了lab1-5并希望在系统类企业找到一份OS底层研发工作或提升软件工程能力的同学

  4. 项目社区导师:肖络元 github id: shzhxh weichat id: xiaoxiaoluckyard

  5. 项目社区导师:杨德睿 github id:YdrMaster weichat id: ydrdwx

  6. 项目产出要求:

    • 能够在某开发板上比较稳定地运行 zCore
    • (可选)能够在 Linux 系统上运行 zCore libos 这个相对比较简单,因为基于 Linux host OS不会涉及太多指令级别的改动。可以作为入门练手。
  7. 项目技术要求:

    • 熟悉 Rust 语言
    • 熟悉 RISC-V64 指令集,或做过其它平台的底层移植工作
    • 熟悉K210的开发经验
  8. 相关的开源软件仓库列表:

rCore 到 zCore 的功能迁移

  1. 项目标题rCore 到 zCore 的功能迁移
  2. 项目描述rCore 是用 Rust 语言实现的兼容 Linux 内核。它支持四种指令集能够运行比较丰富的应用程序。但是随着时间的积累rCore 的代码越堆越多,很多内部实现缺乏推敲,需要优化和重构。后来我们从头开始实现了 zCore 项目,采用了更加清晰的分层结构,同时复用 Zircon 微内核的内核对象实现了 Linux 内核的部分功能(如内存管理和进程管理)。目前 zCore 中的 linux 模块已经能够运行基础的 Busybox 等小程序,但仍有大量原本 rCore 支持的功能没有实现。本项目希望将 rCore 的功能迁移到 zCore 当中,并借此机会进行重构。其中一些代码可以直接搬过来,剩下的可能需要调整适配(例如涉及到 async还有一些可以直接基于 Zircon 内核对象进行实现(例如 epoll
  3. 项目难度:中
  4. 项目社区导师陈乐适合完成了lab1-5并希望在系统类企业找到一份OS底层研发工作或提升软件工程能力的同学
  5. 导师联系方式github id: yuoo655 weichat id: Endagorion_
  6. 项目产出要求:
    • 能够在 zCore 上运行 rCore 支持的 Linux 程序GCCNginxRustc 等
    • 对新迁移过来的代码,要求补充代码文档和必要的单元测试
  7. 项目技术要求:
    • 熟悉 Rust 语言
    • 熟悉 Linux 系统调用
  8. 相关的开源软件仓库列表:

改进 RVM 虚拟机

  1. 项目标题:改进 RVM 虚拟机
  2. 项目描述RVM 是在 rCore 中实现的一个简易 Hypervisor。目前只支持 x86_64利用 VT-x 硬件虚拟化技术,已经能够在 rCore 上运行 uCoreC 语言版本的 x86 教学操作系统)。我们希望继续完善 RVM使其能够支持运行完整的 Linux 系统。此外,还希望将 RVM 从 rCore 中分离出来,作为独立项目。未来不但能够接入 rCore、zCore还能作为 Linux 内核模块运行。
  3. 项目难度:高
  4. 项目社区导师:贾越凯
  5. 导师联系方式github id: equation314 weichat id: equation314
  6. 项目产出要求:
    • 将 RVM 从 rCore 中分离出来作为独立项目。

    • 能够在 rCore RVM 上运行完整的 Linux 系统。

    • (可选)能够把 RVM 作为一个 Linux module在 Linux 启动后以 kernel module 的形式加载运行,然后把自己设定成 host 态,把 Linux 设定成 guest 态。

      这个有参考,即基于 C 语言实现的 Jailhouse 和 Blue Pill

    • (可选)支持 ARM64 的硬件虚拟化,能够在树莓派上运行虚拟机。

  7. 项目技术要求:
    • 熟悉 Rust 语言
    • 熟悉虚拟化技术
    • 熟悉 x86_64 指令集,理解 VMX 的原理和基于 VMX 的开发
  8. 相关的开源软件仓库列表: