第一阶段:Rustlings
第一次接触rust,对于里面的借用和引用,智能指针,生命周期等概念接触起来还是有点难的。在第二阶段的rcore便体现出来了,在很多地方对于这些的理解不够,导致花了很多的时间。第一阶段的Rustlings的难度还是不大的,我通过rust圣经来学习rust。后面还是要多花时间对rust进行学习。
第二阶段:rcore
Lab 1
lab1的sys_task_info还是不难的,通过写这个对系统调用的理解更深了。
Lab 2
lab2重写sys_get_time和sys_task_info,主要是采用虚拟地址后怎样将其转化。sys_mmap可以调用insert_framed_area来进行。在这其中我遇到的问题就是怎么校验合法性,通过不断的调试也便通过了。munmap主要是来删除掉映射区域,也是要判断当前区域是否被映射。
Lab 3
lab3是实现sys_spawn和stride调度算法, 这个是比较简单的,更改了调度算法便完成了。
Lab 4
lab4实现了硬链接和获取文件信息。这个部分是我觉得最难的部分。因为对文件系统的了解不够,只有通过反复阅读实验指导书和rcore的代码来理解。理解了文件系统的不同层次后也便完成了。
Lab 5
lab5是实现死锁检测, 主要是理解死锁检测这个概念,我开始没能理解,导致想了很久都没有思路,最后通过反复看测试用例死锁检测的内容理解了。在写代码的时候对rust的借用不熟悉,导致了很多错误。最后修改后完成了死锁检测。