Skip to content

Commit

Permalink
Merge pull request #105 from StageGuard/master
Browse files Browse the repository at this point in the history
add summary by StageGuard
  • Loading branch information
limingth authored Nov 2, 2023
2 parents 31799f0 + 295b8c7 commit 20df75c
Showing 1 changed file with 25 additions and 0 deletions.
25 changes: 25 additions & 0 deletions source/_posts/2023-rCore-StageGuard-summary.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
title: 2023-rCore-StageGuard-summary
date: 2023-11-01 22:27:59
tags:
- author: StageGuard
- repo: https://github.com/LearningOS/2023a-rcore-StageGuard
---

首先感谢各位老师和学长能够创造出让大家接触并学习实战编写操作系统的机会,这在国内的大环境下是非常难得的,感谢你们的无私奉献。

第一阶段我们从 Rust 基础语法开始学起,在此阶段我巩固了我的 Rust 基础,理解了使用 Rust 语言作为编写操作系统的语言的优势。

相比于传统的 C 语言,Rust 的语法更加现代化,这对于一个 Java/Kotlin 人非常友好,可以方便地用到现代编程语言的技术,如闭包,迭代器,流式 API 等。而且 Rust 语言也有了出了名的安全性,几乎完美杜绝了垂悬引用和二次释放等危险操作。

但是,奇迹和魔法不是免费的。同样地,Rust 的语法和编码规则也更为复杂,我们编码必须完全遵循 Rust 所谓的借用和生命周期规则,而且也出现了许多新概念,这也是 Rust 比较劝退的地方。但是如果能坚持下来,我们将能享受到 Rust 语言带给我们的便利,享受编写高安全性代码的快感。

第二阶直接进入操作系统的学习,这还是第一次实际上手实现操作系统的内核功能,这注定是一个漫长的学习过程。虽然说是使用 Rust 编写操作系统,但接触了底层,难免会和汇编打交道。

首先要理解文档中的汇编代码才能做好基础准备,虽然在学校课堂上学习了特权级,CPU 中断这些知识,但是把他们体现在代码上还是有些难度。特别是切换特权级别这一过程,他们都直接修改了 pc 寄存器,直接跳转执行地址,我们不能用常规编程的程序流控制思路来理解。而 CPU 级别的直接跳转在 Rust 代码中的体现就是无条件地从这个流跳转到另一个流执行了,对于第一次接触这类操作的我产生了极大的震撼。

在理解了这个之后,接下来就是逐步实现操作系统应有的功能:进程调度,虚拟内存空间,文件系统,并发操作,IPC 以及 IO 设备管理。目前二阶段的实验主要还是基于 RISC-V 架构实现的,没有做到架构无关,而且这些功能也是直接嵌入到内核中,没有做成单独的模块。

在实现这些的过程中,我按照教程文档逐一理解代码,然后再将一些调试信息打印出来,直观感受一个操作系统底层运行起来的样子,然后逐步构建起一个庞大的系统架构,每一个模块都精密运作,这是设计师的浪漫。

这次 rCore 学习让我充分学习了操作系统的底层逻辑,也领会到了 Rust 语言的强大,希望后续可以更进一步学习。

0 comments on commit 20df75c

Please sign in to comment.