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
52 changes: 52 additions & 0 deletions source/_posts/阶段3学习总结-石家誉.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
---
title: 阶段3学习总结-石家誉
date: 2025-11-09 20:28:52
categories: 2025 秋冬季开源操作系统训练营
tags:
- author:muou000
- repo:https://github.com/LearningOS/2025a-arceos-muou000
---
## 实验总结

### UniKernel

#### 实验1:print_with_color

在该实验中,我原来是在`__print_impl`中进行实现(因为不懂宏),后来在实验二中输出pass后测评脚本没找到`support_hashmap pass`,问ai是因为我的实现在行末有个换行导致没识别上,最后还是选择修改格式化输出宏。

#### 实验2: support_hashmap

`axstd`中实现了`collections`并添加了`HashMap`。第一次的时候没有将原`collections`中的数据结构导入到新的`collections`中,卡了一小段时间。
最开始是使用递归形式写的,没有注意数据量,运行一半卡死了,最后修改成循环写法,修改后才顺利通过。

#### 实验3:alt_alloc

自感难度不大。

#### 实验4:ramfs_rename

在修改dependencies卡了半天,一直没有调用自己实际写的(对rust的依赖之类的还是不太熟悉,经常不知道该怎么导入)。最开始把问题想太简单了,后续修改才真正pass。

### Monolithic Kernel

#### 实验5:sys_mmap

最开始直接使用`sys_read`将内容写入用户内存空间的地址,没想到内核态没有实现处理这种缺页问题,看着`Page Fault`一脸懵逼,排查半天发现在`read`这一行,后续用ai排查才知道是这个原因,最后先写入缓冲区,再将缓冲区写入用户地址空间。

#### page_fault

自己写的时候开了个头就没想法了。(可能是因为答案就在边上)

### Hypervisor

#### 实验6:simple_hv

本来以为会很难,看视频的时候云里雾里的,实际写起来发现还好。

## 个人总结

自我感觉第三阶段的任务要比第二阶段简单一些,可能是第二阶段刚开始接触kernel,加上代码量比较大,当时一个实验要卡好久,第三阶段感觉主要是底部实现已经比较完善了,所以好写一些。

经过这两个阶段对kernel的学习,我感觉我在文件系统方面还是有一点云里雾里,可能是第二阶段学习的时候比较仓促,不太扎实。同时rust编程方面也不算非常熟悉,看懂没有太大的问题,但是实际上手写总是因为语法问题而有卡顿,同时在包,模块的引用,`cargo.toml`的编写修改还是不太熟悉(以前就简单学过c和cpp,不太关注这种问题)。

离训练营结束还有一个多月,希望可以解决这些问题,继续学习,拿下通过学员证书,尽量争取一下优秀学员证书。