Schedule
七月初刚好是期末,实验室和期末的事情挤在一起,基本没有时间做第一阶段这些任务。 不过还好之前有学过 Rust,可以跳过 step 0。有了跟上进度的希望。
Week 1 - 7.5 ~ 7.11
这周有好几门课结课,还有 lab 内的发表,基本就没什么时间做了。
step 0 自学 rust 编程(大约 7~14 天)
睡觉前还是抽了点时间复习了一下 Rust,用 Rust 刷了一下 LeetCode,顺便练习了一下算法。
做了做 32 Rust Quizes,里面有些问题还挺有趣的,有好些容易忽视的问题。
Week 2 - 7.12 ~ 7.18
这周只有一个一门课结课,发表也在下周,时间终于多了点。
step 1 自学 risc-v 系统结构(大约 7 天)
把 Privileged Spec 的 machine/supervisor 部分全部看了。Unprivileged Spec 挑着几章看了,比如 Introduction 和 Assembly Programmer's Handbook 部分。
然后把 The RISC-V Reader: An Open Architecture Atlas 看完了,最开始没注意到这本,很是后悔为什么没先看这本再去看 Privileged Spec。
step 2 开发操作系统 -- based on qemu (大约 14~31 天)
完成了 Lab 0 到 Lab 3 的内容
添加多核支持的时候有遇到一些代码上的问题,在 github issues 上提问了,很快的得到了回答。
- 比如我之前一直以为屏蔽中断会造成严重的后果,比如彻底漏掉某些中断的处理之类的。
也有遇到一些很诡异的问题,在 github issues 上和微信群内提问了,但是好像不知道怎么解决,只能想办法绕过去。
- 比如明明目标是 riscv64gc,却不能使用 mul 指令
- 比如在我确定 sp 正确设置,且没有栈溢出的情况下,传参会出现丢失的情况(更神奇的是如果我用 gdb 单步执行就不会出错
Week 3
这周目测又没什么时间了,期末加 lab 内发表。周末再更吧,有点担心能不能在 25 号之前全部搞定了。