2022.10.20

开始学习 rust 和 os 的第一天。因为前段时间已经自学了一部分 rust 语言,以为第一阶段语言学习的部分会比较轻松,结果看了课程 repo 里的 quiz ,三十几题里看了 5 道,全都不会
。。还是踏实一点按阶段规划从 rust 学起吧。
话虽如此,基本的语法还是已经了解了的,做 rustlings 还比较轻松。
明天还有学校的 Java 考试,所以今天没有什么精力自学很多内容,就做了 59 道 rustlings,另外今天开始读了《Rust高级编程》这本书,
看了「高级 trait 边界」这一节,感觉上是似懂非懂.jpg,但是毕竟复习明天的考试要紧,今天就先看这么多吧。

2022.10.21

上午考试考得比较爆炸TT,下午还要上课,所以今天也没啥学习 rust 和 os 的进度。
不过今天把 rustlings 刷完了,发现有些地方自己其实基本语法都还学得很差,比如宏,
那么明天的主要计划是学一下 rust 的宏。
标准库也不太熟悉,不用代码补全做 rustlings ,调用方法的时候都感觉很心虚,不像写 C++ 就算没有代码补全,常见的处理字符串操作写起来也算很有底气。
不过这也不是背出来的,多写才能熟悉。

2022.10.22

今天的内容:

  1. 按昨天的计划看了一下 rust 的宏,发现 the book 里面确实没写宏的内容,而不是我读的时候漏掉了。于是去《通过例子学 rust 》里面看了一些宏的教程。但这里面宏讲的也很少很简单,不过仅仅一节的内容还是能让人感到这里面绝对有巨大的黑魔法,看到 $($y: expr),+ 这种东西,很难不让人联想到由 (T arg, T...args) 衍生而来的一系列震撼我妈的操作。
  2. 看了一部分标准库的文档,学会了一些对 OptionResult 简化代码的方法,但是感觉不是很重要,简化代码锦上添花吧。
  3. 看了浙江大学 计算机组成与设计:RISC-V 这门网课,学了一部分 RISC-V 汇编,目前看完了算数、访存、分支和逻辑指令。

明天的计划是配置 OS 的实验环境,继续看几节 RISC-V 的网课,顺利的话就再做一下实验。

2022.10.23

现在是下午四点,今天完全没按昨天的计划做任何事情,因为刚才花了差不多 4 个半小时尝试用 rust 写一个并查集的数据结构。踩了巨多坑,在每个坑上搜索 + 解决都花了很长时间。趁着大部分没有忘记赶紧来记录一下。因为内容比较长,所以准备单独发一篇文章

2022.10.24

又看了一天 rust 数据结构,结论:不要折磨自己用 safe rust 写数据结构,unsafe 和 safe 是左膀右臂,在合适的时机使用 unsafe ,比如实现数据结构的时候。

所以今天学了 unsafe rust 的部分。晚上在本地用 wsl 配了 lab0-0 的实验环境。

2022.10.25

做了 os 的 lab 0-0

2022.10.26

27 日来补一下,昨天忘了写了。

昨天做了 lab 0-1 。

2022.10.27

这两天学校事情太多了做不过来,今天休息一天TT

2022.10.28

读了 rcore 的 tutorial book,发现比训练营的文档详细,内容和练习更多,所以今天照着 tutorial book 重新做了 ch1。

以及阅读了 The Little Book of Rust Macros 的 1.1 到 2.2 节。

2022.10.30

昨天和今天对着指导书看了几遍 ch2 和 ch3 的代码,感觉理解得不太好,没什么进展,这两天觉得 ch2 开始的内容对自己比较困难了,特别是我没有学过汇编,软件学院的计组和体系结构也讲得很很少。。

准备先放缓一点节奏慢慢看吧,可能这几天会先看一下操作系统课的视频。

2022.11.1

今天正式开营了,听了下训练营启动会。

这两天比较摸没做什么事情,看完了 The Little Book of Rust Macros 。总结了下 ch3 开始有点学不动了的主要原因还是不懂汇编,计组基础不好。

启动会的老师说其实没有明确的 ddl,用两个阶段的时间做一个阶段的事情也是没问题的,看自己的目标和收获期望就好。

所以准备不要把自己 push 得太紧了,从 RISC-V 开始慢慢学。

这个学习日志也准备不再每天更新了,改成不定期更,但至少会每周做一次周报,然后尽量每两三天都总结一次吧。

2022.11.4

最近三天学了清华大学 2022 春 OS 课程的前两讲。记了一些笔记,发在了另外的博文。

2022.11.8

完成了 lab1,也是第一个需要写代码的 lab。

2022.11.10

学习虚拟内存,ch4 还没看完。最近的长文都在另一篇笔记里,所这个日志内容就比较单薄了

2022.11.12

又啃了两天虚拟内存,理解上还是感觉没啥进展,到这一章实在难度飙升,因为以前只要脑子里时刻放着一个物理内存模型就很好理解代码的各种行为,而现在引入虚拟内存之后这个模型失效了。

2022.11.13

完成了 lab2 。

已经记不起上一次为了个编程作业花这么大功夫这么久时间是在什么时候了,沈坚老师的 C++ 的文件 IO 作业可能都没有这么难搞吧,单单读通这一章的指导书 + 做实验的时间估计就已经有 30 小时,泪目了。

话虽如此,其实实验通过得并不算完全。在 8 MiB 的内存限制下我在 os4 目录里通过 make run 可以通过用例,但在根目录 make test4 始终会爆内存而无法通过,查找问题无果,所以修改了配置文件的内存限制。但即使是这样我也很满意了,这个爆内存的问题是否是因为我的实现不够好,这一点以后有机会再研究吧。

后面会摸一点鱼,学校的几个期末项目都需要准备起来。

再写一道力扣,今天可以心安理得地歇了。