Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
title: 2025秋冬季OS训练营二三阶段学习心得——代俊勃
date: 2025-11-11 21:49:00
tags:
- author:BoBoDai
---

## 学习心得

## 二阶段 rcore
再一次参加了OS训练营,从第一次的跌跌撞撞到第二次的懵懵懂懂再到第三次的游刃有余,操作系统虽然很难,但也正是因为困难才有意思。

整个内核的调用关系在心里更清晰了,在实现需求的同时,也力求代码的整洁和可读性。
1. ch3 user通过syscall调用内核,本质上就是对目标的物理地址进行赋值,把不安全的操作放到内核来做
2. ch4 加入了MMU,user拿到的地址就不是物理地址了,需要进行一些转换。在分配和释放内存的时候也就是修改页表的一个过程,和修改数据库没什么区别。
3. ch5 实现了简单的进程调度算法,从FIFO变成了stride 调度算法,也把fork 和 exec拼一起形成了spawn。
4. ch6 对inode进行操作,实际上各种方法都被包装的很好了,调用关系也很清晰。
5. ch8 这里弄清楚创建线程的位置和那些变量的增减时机一切都迎刃而解。

## 三阶段arceos
代码量总体更少,确定了实现范围后很快就可以完成。

在实验上

1. [print_with_color] 可以很好的熟悉调用关系
2. [alt_alloc_bump] 一个bump内存分配算法 如果有时间可以尝试一下挑战题
3. [ramfs_rename] 相比于二阶段这里的node抽象程度更高,老节点挂在新路径上即可实现
4. [hashmap] 实现collections中的hashmap的替换,可以自己新建一个collection,在里面实现hashmap
4. [sys_map] 三阶段代码量最大的一道题,不过很多方法和调用都在main中用过了,先拿到用户栈的地址,在里面找一块内存,之后把程序读入缓冲区并写到目标位置
5. [simple_hv] 处理一下未处理的异常,之后执行下一条命令


### 总结
操作系统是一个很神奇的东西,每一次学习都有新的收获,在里面能找到很多数据库,web开发共通的思想。操作系统导论也是一本很好的书,虽然我还没看完内存部分,但是通过结合实践,理解的更深刻了。

学习操作系统就像爬山,每一步都需要扎实,每一步都很困难,但每一步都离顶峰更近,踏一步就有一步的收获。