0%

rcore-debug-log

1 Stage

初次学习rust ,之前一直以c++作为主语言进行编程,大概了解了rust 的借用机制,而且对操作系统感兴趣,所以开始学习

在学习rust过程中,与c++相对比很多“不适应”

  1. 变量的借用机制以及生命周期的声明让人很水土不服,还在深刻感受
  2. 基础stl库的文档过于繁杂了。
  3. 比 c++ 更原生支持的泛型编程,而且比c++模板可读性更高,debug也相对更容易一些
  4. 总体比 c++ 更约束,c++ 的自由带来的是各种错误和不安全性,rust在这一方面确实做得更加出色(听说性能也与c++相差不多)

2 Stage

lab1

简单的系统调用实现,关键是了解了 os 最初的形状,见识到了如何使用汇编和高级语言一起实现应用,很酷

lab2

rcore 路上的第一道门槛,如果lab1只能算花了我一小会的放松时间,那lab2就相当于一整天。

  1. 先把lab1的实现在lab2中兼容(地址转换有点难受)。
  2. 而后专注于实现 mmap 与 munmap,在实现时,采用直接新建area的方式,删除则删除对应 start area
  3. 但遇到了问题,在校验vpn是否合法时,pte检验一直出现问题,最后在translate to ppn相关函数中做了自己理解的改动

lab3

实现角度看比较简单,但自己尝试了不同的stride位数 以及 bigstride,看到了很多很有意思的现象,包括一直不被调度,包括反转现象

lab4

感觉关键在于硬链接统计方法,实现比较粗暴(实在没时间了。。),有时间可以考虑如何使用抽象的思维跳过 STDOUT STDIN

lab5

考虑银行家算法 和 死锁检测的区别(🤔)