0%

2024秋冬开源操作系统训练营第二阶段总结报告-郑超群

在导师的介绍下,了解到开源操作系统训练营这样一个平台。在那之后一直在关注,直到这次秋冬季训练营的开营,我毫不犹豫地选择了报名参与,并与导师一同号召学校的本科生、研究生积极参与。最后,有超过 50 名同学进行了报名,同时通过一阶段的同学有 20 名之多,晋级率大大超过平均水平。

说回到这次训练营的第二阶段,也就是 rCore 实验的部分。由于前段时间正好做了一下 MIT 的操作系统内核课程 MIT6.s081,并且过了一遍知名操作系统入门教材——《Operating Systems Three Easy Pieces》,因此我在本次实验的理论部分准备还算比较充分,在这方面没有花多少时间,而是主要投身于理解 rCore 的代码架构设计和与此相关的 Rust 语言的一些特性(我在此之前并没有接触过 Rust)。不得不感叹,Rust 语言虽然在写一些数据结构与算法题时非常痛苦,但在用于这种工程项目,尤其是系统软件时,却显得十分优雅,个人认为代码可读性上相比用 C 语言编写的 xv6 来说更高。

rCore 一共有 5 个实验,基本都是实现系统调用,但是涉及的操作系统模块各不相同,涵盖虚拟内存、进程管理、文件系统和并发控制部分,还算比较全面,题目难度比较适中,给操作系统内核编程入门提供了一个很好的途径。

尽管 rCore 实验的设计已经很好了,但也仍存在一些不足,最突出的莫过于 测试用例的不全面。很多样例都只检测一个非常表层的信息,而不对其所完成的具体功能进行测试。例如 sys_set_priority 只对返回值进行检测。另一个我的切身体会是,我在完成所有实验后,尝试撰写题解并进行复盘,便把之前写的一些已经“OK”的代码仔细读了一遍,发现从中找出了不少错误,而这些都成功“逃离”了测试样例的“法眼”。当然,编写全面细致的测试具备一定的技术难度与繁琐性,但我还是希望未来能够尽可能的对其进行完善。

最后,虽然 rCore 的学习暂时结束了,但操作系统学习的道路还远未到达终点,也不可能到达终点,期待三、四阶段与 ArceOS 的故事。