0%

2024春夏季开源操作系统训练营第一阶段总结-definfo

前言

作为一个长期依靠自学的科班选手,目前只系统学习过 Berkeley CS61A/61B,参与过炼丹项目,系统编程最近才起步(xv6)。加入训练营主要是借助 ddl 逼迫自己学习 Rust 以及 OS,拓展技术栈,同时也在为明年暑期实习和后续可能的 PL 研究增加知识储备。(能够遇到志同道合的朋友就更好了^^)

心得

之前早已听说 Rust 语言层面的安全性,但在实际上手之后才真正理解了这一点:严格的所有权、类型、生命周期、借用等机制,不断优化的编译时检查和对人类友好的报错信息/修改建议,包管理、配置管理的先进,以及零成本抽象的构建逻辑等,形成了区别于其他主流语言的独特风格。更加难得可贵的是 Rust 高质量的官方教程,讲解深入浅出,配合实际案例,一般路过萌新也能够顺利入门。

在 Rust 语法学习以及 Rustlings 练习中,主要难点有:读写/所有权机制、泛型/生命周期、智能指针、并发,以及一些 Safe Rust 目前难以解决的问题及,例如链表、自引用和循环引用。

Rust 不同于 C++ 等默认 copy semantics(复制语义) 的语言,转而默认对未实现 Copy trait 的类型 move semantics(移动语义),这一点使得很多初学者望而却步:即使编写简单逻辑程序,仍然需要对 Rust 的类型以及内存模型有一定了解,控制引用生命周期,同时明确程序每一处的逻辑,才能在 Safe Rust 的约束下通过编译。Rust 生命周期机制显式实现了对引用的有效期规定,从而有效控制借用范围。Rust 经过多次版本迭代,也引入了一系列语法糖,例如 Deref coersion、? match Result 等,一定程度降低了心智负担,不必成为“语言律师”才能上手开发。

总的来说,Rust 是一门高度现代化,注重内存安全和性能的系统级开源编程语言,同时具有逐渐完善的编译器和第三方库生态,可谓未来可期。

学习目标

第二阶段开始前,通过 Berkeley CS61C 以及 xv6 lab 提升对 RISC-V 指令集以及 OS 基本运行逻辑的理解。

尽可能在预计时间内完成第二阶段任务,同时备战期末(