0%

2024开源操作系统训练营第一阶段——Rust入门篇

一阶段

前言

进入这个训练营很意外,因为是在同学建的就业群里面看到的连接,等进来之后从知道是训练营,本着既来之则安之的心态,我满怀期待的开启了第一阶段的rust学习 结果差点被所有权和引用绕晕 ,所有权和引用的学习真是让我又爱又恨,真是应了群友们的那句话:“编译之前,c++是世界上最好的语言!编译之后,rust是世界上最好的语言!”。

有几天我很想尝试用rust写leetcode的算法题,结果别说写了,我用模仿c++的代码都费劲,那几天rust真是给了我重重一击,但通过对rust的不断运用和学习,我也逐渐开始理解了为什么rust的安全性会如此之高 虽然换来的是编译期间的无数BUG ,但这并不妨碍它仍是一门值得学习和认真揣摩的一种语言。

Rust 学习总结

这三个星期主要集中于对于rust基础语法的学习,以及rustlings的110题,书籍方面,只是拜读了一下《RUST圣经》。好像这110题写过来,就没有几道题是改完一次就不报错直接通过的(不过看到群友们也是如此,我便感觉好受了很多)。
在rustlings的110题中,所有权、引用和生命周期的学习与运用几乎贯彻了全部的代码(要问我为什么是几乎,因为生命周期的题开始的晚哈哈哈哈),其中最麻烦的莫过于test的最后几题,虽然我知道群友们说的对,第一次见新东西难免会很懵,但是那几题直接硬控我两天。。。,相较之下,其它的一些题无非是对知识点的巩固和对算法的实现,对我而言反而没有很大的压力,按部就班来,一切都刚刚好。

二阶段(Rcore)

Rcore 学习总结

学了 Rcore 三个星期,把文档从前到后过了一遍,令我印象最深的还是前两章的内容,移除标准库依赖、构建裸机执行环境、对内存进行布局、将应用程序链接到内核以及进行特权级转换时对Trap上下文的数据保存与恢复,通过 __alltraps__restore 初始化应用程序以及执行吓一跳应用程序的过程都令我备感兴趣。

在实现 ch3 - ch8 时,最大的难点还是对代码含义的理解以及能否按需找到相关属性的存放位置,例如在 ch4 中虚拟地址到物理地址的转换方法,ch5 中通过 forkexec 的具体实现来推测 spawn 的实现, ch6中对 sys_stat 的实现必须借助 vfs 的相关属性去进行计算, ch8中在线程创建,线程移除,上锁,解锁时都需要对自定义的检测死锁结构体 ProcessLock 进行相应改变。

通过本次学习,我对 Rcore 的实现原理有了更深刻的了解,同时也认知到自己对计算机底层的相关知识掌握的并不牢固,大有几分囫囵吞枣之态,因此,在后续的学习中,我打算对计算机底层的相关知识进行系统的学习,例如汇编语言、操作系统、计算机组成原理等,以便能够更好的理解 Rcore 的实现原理。