1 Stage
初次学习rust ,之前一直以c++作为主语言进行编程,大概了解了rust 的借用机制,而且对操作系统感兴趣,所以开始学习
在学习rust过程中,与c++相对比很多“不适应”
- 变量的借用机制以及生命周期的声明让人很水土不服,还在深刻感受
- 基础stl库的文档过于繁杂了。
- 比 c++ 更原生支持的泛型编程,而且比c++模板可读性更高,debug也相对更容易一些
- 总体比 c++ 更约束,c++ 的自由带来的是各种错误和不安全性,rust在这一方面确实做得更加出色(听说性能也与c++相差不多)
2 Stage
lab1
简单的系统调用实现,关键是了解了 os 最初的形状,见识到了如何使用汇编和高级语言一起实现应用,很酷
lab2
rcore 路上的第一道门槛,如果lab1只能算花了我一小会的放松时间,那lab2就相当于一整天。
- 先把lab1的实现在lab2中兼容(地址转换有点难受)。
- 而后专注于实现 mmap 与 munmap,在实现时,采用直接新建area的方式,删除则删除对应 start area
- 但遇到了问题,在校验vpn是否合法时,pte检验一直出现问题,最后在translate to ppn相关函数中做了自己理解的改动
lab3
实现角度看比较简单,但自己尝试了不同的stride位数 以及 bigstride,看到了很多很有意思的现象,包括一直不被调度,包括反转现象
lab4
感觉关键在于硬链接统计方法,实现比较粗暴(实在没时间了。。),有时间可以考虑如何使用抽象的思维跳过 STDOUT STDIN
lab5
考虑银行家算法 和 死锁检测的区别(🤔)