Skip to content

Commit 1fc9463

Browse files
Merge pull request #844 from luckyydoge/zjw_blog
zjw blog
2 parents 16aac54 + 3ea8a7d commit 1fc9463

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
---
2+
title: 2025前三阶段总结
3+
date: 2025-11-03 18:27:41
4+
tags:
5+
- author:luckyydoge
6+
- repo:https://github.com/LearningOS/2025a-arceos-luckyydoge.git
7+
---
8+
9+
先说说为什么会参加这个训练营。
10+
11+
起因是在配置arch linux的过程中用到了很多rust写的工具,而且这些工具用起来非常顺手,引起了我对rust的兴趣。在看完《Rust 程序设计语言 中文版》后,我开始寻找一个rust相关的项目练手。正好在知乎上看到有人推荐rcore,加上之前写过xv6(s081),对操作系统有不小的兴趣,就这样开启了这段rocre之旅。
12+
13+
## 第一阶段
14+
15+
这一阶段主要是熟悉rust语言。
16+
17+
由于我有java、python的语言基础,这一阶段还是比较轻松的。
18+
难点是在写链表时因为有所有权限制,要对node作多层包装。刚开始写时并不顺利,其他语言的基础成了障碍,总是会按python的写法往下写,导致所有权出问题。直到真正理解所有权的含义才写出正确的代码。
19+
20+
所有权是我第一次真切感受到rust和其他语言的不同,它把一些原来从未考虑的可能出现的数据竞争提前暴露出来,迫使编写者去思考数据关系,这种体验是从未有过的。
21+
22+
## 第二阶段
23+
24+
受益于xv6,第二阶段的实验基本没有卡点。这些实验让我深入理解了riscv的trap、页表等机制,重新梳理了操作系统的进程切换、文件系统等相关知识。
25+
26+
## 第三阶段
27+
28+
这一阶段的实验比第二阶段的实验要难一些,花费的时间也更多。
29+
30+
对于hashmap这个实验,我自己实现了一个固定buckets的hashmap,但看到blog中大家基本是引网上的包,感觉自己有些笨笨的,还是要多和群友交流。
31+
32+
后面在mmap这个实验卡了很久,一直在想怎么实现文件的lazy load和对应,最后是面向测例编程,直接文件内容读到内存中通过测例完事。

0 commit comments

Comments
 (0)