1. 多种语言协同构造的 OS

已有工作:

  1. TypeKernel:三位六字班同学在2019年OS+编译专题训练课上的联合实验。用Haskell语言构造了一个用于编写OS的DSL,将其编译为C语言子集(C----),并实现了一个基于UEFI的Demo。

参考资料:

  1. Typekernel给后来者的话

2. 为 rcore 实现更多 Linux 系统调用

主要目标:

  • 在 rcore 上扩展 Linux 系统调用支持,以支持更多应用。可以考虑实现或者完善:信号机制、TTY、用户和群组权限管理、procfs和devfs。

已有工作:

  1. 在 OS2019 大实验中,王润基和陈嘉杰合作在 rCore 中实现了 Linux ABI,支持运行原生的 Linux 程序(基于 musl libc,不支持 glibc)。目前 rCore 中已经实现了60多个 Linux Syscall(+20多个空实现),支持运行:Busybox, GCC, Nginx, Redis, Rustc 等实际应用。
  2. Biscuit 是 MIT 用 Golang 编写的类 Unix OS,相关论文发表在 OSDI2018 上。他们实现了58 个 Syscall(不完全兼容Linux),支持运行 Nginx 和 Redis(经过修改,基于他们自己的 libc)。性能测试与 Linux 对比,只慢了 5%-10%。我们尝试在 rCore 上重复这一工作,但最终由于真机调试过于困难而作罢。

参考资料:

  1. rCore 对标 Biscuit OS 进行真实应用/网卡的性能测试
  2. rCore 毕业论文
  3. 在 rCore 中实现 epoll
  4. 在 rCore 中实现 SystemV 信号量和共享内存
  5. 在 rCore 中实现 Framebuffer 运行 mgba

3. 用 RUST 重写 zircon(zCore)

主要目标:

  • 基于 rCore 现有基础,用 Rust 重新实现 Zircon 微内核。
  • 根据文档描述,实现相应的内核对象和系统调用,目标是能运行到 shell。
  • 在新项目中尝试新技术、积累经验,用来重构和改进 rCore。

已有工作:

  1. 潘庆霖在 OSTrain2019 大实验中对 Fuchsia 进行了完整的调研和分析。
  2. 随后王润基在寒假期间尝试搭起了 zCore 项目框架,目前已实现了 8 个 syscall 和诸多内核对象,还剩 50 多个。
  3. zCore 尝试的新技术包括:抽象出 HAL 以实现纯用户态开发和测试,应用 async 实现内核任务管理……

参考资料:

  1. Fuchsia 调研项目 wiki分析文档
  2. zCore 项目仓库
  3. Fuchsia 源码及官方文档
  4. Fuchsia 中文社区

PS:

  • 此项目是某位助教哥哥的毕设课题,和另一位助教哥哥本学期的个人娱乐项目:)))

4. 用 RUST 实现 KVM 功能

主要目标:

  • 实现一个简单的 VMM(虚拟机监控程序)
  • 对外提供 Linux KVM 或 Zircon Hypervisor 接口
  • 尝试利用 x86 VT-x、RISCV H 扩展或 ARM 相关指令集
  • 能够同时运行多个 rCore

参考资料:

  1. JailHouse:Linux-based Hypervisor
  2. RVirt:MIT 用 Rust 写的 RISCV Hypervisor
  3. Linux KVM, Apple Hypervisor Framework

5. RISCV 用户态中断

主要目标:

  • 利用 RISCV 用户态中断机制,改进 OS 以提升 IPC 及 IO 性能。

参考资料:

  1. RISCV 特权级手册

6. 重构 rcore 内核组件形成 OS-Kit

主要目标:

  • 将 rCore 拆分成独立可复用的 crates,可组合成多种特定 OS

已有工作:

  • 将庞大的 OS 拆分成一个个独立的模块,一直是 rCore 开发的指导思想和终极目标。不过现实中工程总是十分 dirty 的,需要不断地在优雅设计和实际产出中作出妥协。

参考资料:

7. 为 rcore 适配树莓派4(ARM64)

主要目标:

  • 让 rCore 支持树莓派4物理硬件
  • 完善与改进已有的树莓派3驱动(SD卡、音频、GPU),或添加新驱动支持(USB、网卡、蓝牙)

参考资料:

  1. rCore 的 ARM64 和树莓派3移植
  2. 在 rCore 中支持树莓派3声卡
  3. 在 rCore 中支持树莓派3 SD卡
  4. 在 rCore 中移植 VideoCore IV 驱动

8. 为 rcore 适配基于 rv64 的物理硬件(如 K210、FPGA+Rocket Chip等)

9. 形式化验证的OS

10. 基于 rcore 的网络路由器

主要目标:

  • 完善多网卡支持,实现系统路由表和内置的网络功能,或者给用户态提供一个类似PCAP的接口,然后编写一个软路由
  • (可选)在计网联合实验的成果上继续
  • (可选)优化 10G 网卡驱动(ixgbe)的稳定性和性能,并且在 PC 机上运行

参考资料:

  1. FPGA 上运行 RISC-V rCore 构建路由器
  2. 计网联合实验

11. 改进rust语言的async on no-std

12. 内核态的rust std实现

13. 基于Labeled RISCV的OS kernel支持

参考资料:

  1. 为 rCore 适配 PARD / Labeled RISCV

14. 在 rcore 中支持 container

1. 自由选择 OS 相关的论文、改进结果

参考资料

1. 为 rcore 添加 USB 驱动支持

主要目标:

  • 在 rcore 中实现 USB 协议栈
  • 支持简单的 USB 设备,如 USB 键盘/鼠标、U 盘读写
  • 能够在至少一种真实硬件上演示(树莓派、PC)

参考资料:

  1. https://github.com/cfgbd/rustos/tree/master/usb
  2. 在 rCore 中移植 USB 驱动的尝试