项目整体介绍
背景和历史
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解析,自旋锁,日志……
已做的事 和 要填的坑
相关链接和参考资料
OS大实验项目Wiki(仅内部访问)
计算机系统综合实验项目Wiki(仅内部访问)
Writing an OS in Rust:从头开始用Rust写x86_64内核,非常详尽的教程,强烈建议阅读。
rust-osdev:GitHub组织,由上述博客作者牵头维护。提供诸多用Rust编写OS所需的函数库和工具链。
CS140e:Stanford开设的实验性OS课程,使用Rust编写OS并在树莓派3上运行。
Redox:完成度最高的Rust OS,支持GUI。
Last updated