rust_os_docs
Search
⌃K

项目整体介绍

背景和历史

RustOS起源于清华大学操作系统课(2018春)的大实验。立项初衷是使用Rust语言移植ucore_os_lab,并利用Rust语言特性进行SMP多核优化。
同时进行的还有另外两个Rust小组,目标分别是实现LKM(内核可加载模块)及面向ARM的移植(基于CS140e)。考虑到OS的高耦合性,三组开发独立进行,目前尚未合并。
经过前期调研,我们选定《Writing an OS in Rust》系列博客作为起点,它包含一个简单的x86_64内核,支持中断,并封装好了页表。
我们发扬革命乐观主义精神制定了开发计划,之后发现(近乎从零开始)重写OS的工作量远超预期。经过约两个月的爆肝,我们仅完成了大部分ucore_os_lab的移植工作,多核支持完全没有开始。
在接下来的计算机系统综合实验课(2018夏)上,我们又将RustOS移植到RISCV32I平台,并在我们自己造的FPGA CPU上正常运行。感谢张蔚和石振兴的工作,他们留下了丰富的文档,使得移植工作只用了两周。
转眼到了操作系统专题训练课(2018秋),接下来的历史将由大家共同书写!

目标和哲学

以下言论均为作者个人观点,欢迎读者共同探讨改进。

兼容原版uCore

大量用户程序,直接拿来用。

逻辑上独立的部分,尽量分离成模块

目前内核中三大模块:内存管理、进程管理、文件系统,都已经作为独立的crate存在。致力于让使用者:实现底层支持,享用高层功能。

有现成的轮子,绝不自己造

借助Rust强大的包管理系统,我们可以方便地复用别人的代码。目前OS的如下功能,均由外部库完成:x86_64和riscv底层支持,堆分配算法,ELF解析,自旋锁,日志……

已做的事 和 要填的坑

  • 模块化内存管理,进程管理
  • 支持rv32
  • 重构x86_64 boot流程,使用bootloaderbootimage
  • !! 进程和文件系统的接合(目前ls等程序尚未实现)
  • !! xv6 x86_64 用户程序测试
  • ! 按OS lab顺序进行拆分
  • ! 多核的启动:rv32,x86_64
  • ! 多核支持和优化(参考sv6)
  • rv64支持(依赖于Rust for RV64编译器)
  • 无MMU支持(如RISCV M-Mode)
  • 网络驱动
  • 跟踪分析工具

相关链接和参考资料