最近一两个月4_16 - 5_31
在湖里业余时间完成了T
大的rustlings
闯关和rCore
实验,把整个流程跑完感觉还是比较舒服的,可以学习到一些rust
语言和操作系统知识,弥补了部分网安操作系统实验课学不到什么东西的遗憾。
适用人群:
- 喜欢折磨自己的计系同学(要是做完你们的操作系统大实验还意犹未尽只能说确实是勇士),不过如果你是大一大二的学生确实可以先做一个这个练练手?
- 鄙人仅代表18级情况:本科部相同名称的实验课任务与同等水平高校存在较大差距,不满足划水实验的网安同学(
Rust
对应的内存安全机制是挺值得了解的)
- 任何想要学着玩的孩纸~ 快到碗里来
在开始这门课前你需要有什么前置知识?
Rust学习:
说实在的,Rust
不好学,至少没有那么好学,是属于那种比较劝退的类型(我也不知道我现在算是学会了没有)。想把它的一些设计思想吃透,你最好是懂C++
的。如果不会C++
,你最好学过面向对象语言,如python
和java
,并且有一定的C
语言基础。不过上述的经验只是让学习过程更加丝滑,并不保证学习质量,没有经验当然可以直接学。
学习Rust
的最好方式是看书做题,用rustlings
学习是很香的。
组成原理知识:
像计系组成原理每人用verilog
或者chisel
感觉还是太极端了(毕竟不是每个人都想要搞芯片的说),你只要有一个408
级别的计算机组成原理知识就可以了,它们能够让你比较轻松地看文档。(什么你连408
知识都没有?那和我当时一样老老实实地学一学cs61c
吧)
简单介绍一下这门课吧:
这门课是清华大学学子利用rust
重构uCore
后得到的成果,大致是在2020
年之后成为他们实验课用的材料。
鄙人对其他的操作系统课程实验,包括我校计系学子的操作系统大实验都缺乏了解,可能没法给大家做对比。不过rCore
的主线其实还是相对清晰的,相比于从0
到1
来写操作系统,这边的实验基本上是写系统调用。为了完成一些系统调用功能,需要学生认真阅读相关的源码框架。理解其中包含的基础知识,然后再开始动手做。
这门课确实是有授课视频的,主要集中在这个网站上,但是个人觉得听着没啥意思,所以完全照着实验指导书跑流程跑下来。单打独斗确实也遇到比较坑的地方,不过大部分我踩过的坑点都在个人写的文档里头记录过了,如果没有的话就当我妹说(×)。
实验指导书有较为详实的阅读资料,如果感觉不够详细,可以参考这个文档,对于课程,其实也可以参考上交IPADS
在b
站上上传的相关视频课程和经典的OSTEP
,OSTEP
对应的课程cs537也是非常棒,做存储的同学对于威斯康星麦迪逊的这个研究组想必肯定不陌生了。
这门课的特色:
- 从一个最小的利用
RustSBI
打印字符的三叶虫操作系统开始,体验一步步“生物进化”的过程。其实和大家熟悉的xv6
很像(然而本人不熟悉,之后会去好好读源码的!)
- 编程任务并不是那么困难,不需要你大量地进行类似于文件系统的大规模设计和写代码。主要时间是在读源码、读文档、以及仿写。目标则是实现一些算法,如
stride
调度,banker algorithm
银行家算法,写写系统调用等等。本人回顾了一下这门课的工作量,感觉可能加起来也就一千行出头?当然也有可能是因为rust
本身写起来其实挺方便的。
- 测试给的很全,最关键的是测试是能看到的,而且有一些不好说出来的坑点?需要仔细甄别。最后的测试打分可以在本地,也可以在
github
上用CI
来做。
来不及上车了,我能看参考资料速通吗?
- 我卓了一遍,文档和代码都有。
- 你想速通当然可以了当然还是不推荐。
本人的源码解读地址:
https://github.com/Unik-lif/course_notes/tree/main/rCore
学习网址:
https://github.com/LearningOS