0%

24aw rcore labs summary

阶段1:语言学习

rust 是一门非常有意思的语言,它吸收了很多现代编程语言的特性,特别是来自函数式编程的许多特性,比如 默认不可变,模式匹配,流 api,以及 trait,可以以一种不同的方式去抽象与编码。
rust 的“人体工程学”做的也非常不错,有许多语法糖与内置宏,匿名函数的写法也足够简洁,在学习过程中感觉非常有趣。

在语言学习过程中重点学习了基本的语法以及一些库函数的使用,对语言周边,比如 clippy 的使用还不够好,build.rs 也不太会写,多线程编程也不够熟练,希望接下来的学习当中能再注意一下重点学一下这些东西。

阶段2:rcore labs 学习

rcore 今年秋冬的任务是除了进程间通信以及io设备没有做过多要求,其余的每章都有一个编程练习,在我看来,编程练习的难度是适中的,但是依然要求完整的理解整个代码框架,对学习操作系统内核很有帮助。

前三章作为引子一步一步从裸机程序到一个批处理裸机程序的内核,后面几章的顺序是:虚拟内存(地址空间),进程,文件(持久化存储),再到并发。课程顺序与传统授课顺序不太一样,在我个人看来是一种由易到难的渐进学习过程:因为第八章的线程和并发编程真的感觉好难 debug 😂,在这章上浪费的时间也比较多。

印象最深刻的是对文件系统的讲解,将文件系统作为一个库抽象出来,内核也只是管理文件系统提供的 Inode 接口,以此来区分在内存中的 inode 和磁盘中的 inode,这样一层从 BlockDevice 到 FileSystem 再到 rcore-kernel 最后被封装为一些系统调用,这样层层抽象的写法看起来真的挺赏心悦目的哈哈,而且对知识的学习与综合起来也方便许多。

另外还有虚拟内存,内存模型也是内容量非常庞大的一章,需要理解 memory-set, map-aera, pagetable-entry, 以及物理地址和虚拟地址,物理页号和虚拟页号之间的关系,

抽象之下是和底层处理器的操作,内联汇编,riscv 库,以及 C ffi,rust 都支持的很好。处理 trap 的汇编函数也很有意思,以及一些 riscv csr,学习的同时也去了解了一下 riscv。不过本次学习,对rv要求的不是很多,更多的是以问答作业的形式去提问,不知道后面的阶段会不会有深入的机会。