项目整体介绍

背景和历史

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解析,自旋锁,日志……

已做的事 和 要填的坑

相关链接和参考资料

Last updated