Skip to content

Commit 93164ad

Browse files
committed
Merge branch 'master' of https://github.com/Anekoique/blog
2 parents 1b4896e + 95c5248 commit 93164ad

3 files changed

+148
-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春夏季开源操作系统训练营第一阶段总结报告-hxingjie
3+
date: 2025-3-25 19:17:06
4+
categories:
5+
- summary report
6+
tags:
7+
- author:hxingjie
8+
- repo:https://github.com/LearningOS/2025s-rustling-hxingjie
9+
---
10+
11+
12+
## 一、前言
13+
14+
通读了一遍《Rust程序设计语言》书籍并完成了训练营的Rustlings练习。经过两周的学习,我对Rust有了初步的认识和掌握。以下是我对这两周学习过程的总结。
15+
16+
17+
## 二、学习内容
18+
19+
1. Rust基础知识
20+
21+
- Rust编程语言的基本语法,包括变量、数据类型、运算符、控制流等。
22+
- Rust的所有权系统,包括所有权、借用、生命周期等概念。
23+
24+
2. Rustlings练习
25+
26+
- 通过完成一系列练习,巩固对Rust基础知识的理解和应用。
27+
- 练习涵盖了Rust的所有权、借用、生命周期、错误处理、宏、模式匹配等方面的内容。
28+
29+
30+
## 三、学习心得
31+
32+
这一阶段印象最深的还是最后的算法部份,尤其是前两道关于链表的题目,其实之前一直是使用c++做算法题,对链表也较为熟悉了,但是由于对rust的特性不熟悉以及对链表没有深刻理解,让我有一种有力使不出的感觉,后面通过阅读题目的框架,以及对书本知识的巩固,终于是对rust中的链表有了初步的认识,写完链表的题目后,后续的题目也很快完成了。rust语言的特性让我对编程和计算机有了更深的理解,尽管现在还是写得磕磕绊绊,但是相信通过不断学习和时间,将来我也能够编写出优秀的rust代码。
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
---
2+
title: 2025春夏季开源操作系统训练营第三阶段总结报告-hxingjie
3+
date: 2025-4-21 19:20:32
4+
categories:
5+
- summary report
6+
tags:
7+
- author:hxingjie
8+
- repo:https://github.com/LearningOS/2025s-arceos-hxingjie
9+
10+
---
11+
12+
13+
## 一、前言
14+
15+
在过去两周,我学习了Unikernel, Monolithic Kernel, Hypervisor三种内核架构。经过学习,我对组件化操作系统有了初步的认识和掌握。以下是我对这两周学习过程的总结。
16+
17+
18+
19+
20+
## 二、学习内容
21+
22+
1. Unikernel
23+
24+
学习了Unikernel的基础与框架,包括如何从汇编代码进入到rust代码再进入到内核,并通过axhal -> axruntime -> arceos_api -> axstd 实现控制台的打印输出。
25+
26+
接下来引入了动态内存分配组件,以支持Rust Collections类型。通过引入axalloc模块,实现对内存的管理,并学习了动态内存分配的相关算法。通过这部分的学习,让我理解了rCore中为什么到后面的章节就可以使用Vec等集合类型。
27+
28+
之后引入任务数据结构并构建了通用调度框架,实现了抢占式调度。并实现了文件系统的初始化和文件操作。
29+
30+
实践作业:
31+
32+
实现带颜色的打印输出,理清控制台的打印输出的调用链即可, 可以在不同层次的组件上修改。
33+
34+
手写HashMap,我使用拉链法实现哈希表,并通过引入axhal提供的随机数增强鲁棒性。
35+
36+
实现bump分配算法,根据代码框架,实现EarlyAllocator的初始化和分配函数。
37+
38+
实现rename,首先是需要追踪是如何使用axfs_ramfa的,通过调试,可以发现底层实现是在DirNode,并且源数据结构其实就是btreemap,具体操作并不复杂。
39+
40+
41+
42+
2.Monolithic Kernel
43+
44+
在unikernel的基础上,引入用户态、系统调用等即可完成到宏内核的跨越,这一部分的学习让我更深刻的理解了组件化的优势,扩展task属性实现宏内核的进程管理以及分离调度属性和资源属性的策略更是让我眼前一亮。
45+
46+
实践作业:
47+
48+
实现sys_mmap系统调用,先使用fd读取源文件的内容,分配所需的内存空间,再查找用户态的页表得到相应的物理地址,将源文件内容写入即可。
49+
50+
51+
52+
3.Hypervisor
53+
54+
引入RISC-V H扩展,使原来的S态增强为HS态,并加入了VS态和VU态,通过对特权寄存器的修改,即可跨越到Hypervisor。
55+
56+
主要学习了VM-EXIT,由于Guest不存在M态,所以超出当前特权态的处理能力时会经历 VU -> VS -> (H)S -> M 的过程,本部分的作业也是和 VM-EXIT相关的,通过修改 vmexit_handler 函数以完成作业的要求。
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
---
2+
title: 2025春夏季开源操作系统训练营第二阶段总结报告-hxingjie
3+
date: 2025-4-06 19:18:43
4+
categories:
5+
- summary report
6+
tags:
7+
- author:hxingjie
8+
- repo:https://github.com/LearningOS/2025s-rcore-hxingjie
9+
---
10+
11+
12+
## 一、前言
13+
14+
通过阅读实验指导书,我跟着操作系统的发展历程,学习了批处理系统、多道程序与分时多任务、虚拟地址空间、进程管理、文件系统、进程通信和并发等核心概念,并对rCore的实现有了更深入的认识。以下是我对这两周学习过程的总结。
15+
16+
17+
## 二、学习内容
18+
19+
1. 搭建执行环境:
20+
21+
学习了平台与目标三元组,理解了应用程序执行环境。
22+
23+
2. 批处理系统:
24+
25+
学习了批处理系统的基本原理,包括作业调度、作业执行过程。
26+
27+
3. 多道程序与分时多任务:
28+
29+
掌握了多道程序设计的基本概念,以及如何实现分时多任务调度。
30+
31+
4. 虚拟地址空间:
32+
33+
理解了虚拟内存的概念,包括页表、地址映射。
34+
35+
5. 进程管理:
36+
37+
学习了进程的管理、调度,更加深入的理解了fork+exec。
38+
39+
6. 文件系统:
40+
41+
掌握了文件系统的基本结构,包括目录、文件。
42+
43+
7. 进程通信:
44+
45+
学习了父子进程之间的通信机制——管道。
46+
47+
8. 并发:
48+
49+
学习了线程管理机制的设计与实现,理解了同步互斥的实现,包括锁、信号量、条件变量。
50+
51+
52+
## 三、学习心得
53+
54+
第二次学习rCore,加之前段时间学习xv6的经历,对rCore有了更深入的认识,包括trap的过程、地址空间的切换等,和群里同学的讨论也加深了我对代码的理解。
55+
56+
通过学习rCore,我对操作系统的原理有了更深入的理解,虽然考研的时候较为系统的学习了操作系统的知识,但是基本上还是停留在理论知识方面。这次rCore学习之旅,我获取PCB对进程进行操作、实现课本上学习过的系统调用、深入汇编代码理解什么是 '陷入' ,让我对操作系统的设计理念、计算机的体系结构有了具象化的认识。
57+
58+
在学习过程中,我也遇到了许多挑战,解决了旧问题又出现了新问题,对操作系统有了更深入的认识反而产生了更多的问题,但是我相信计算机没有魔法,多查资料多看源码一定能把疑惑解开。
59+
60+
两周的rCore学习之旅让我受益匪浅。通过学习rCore,我对操作系统的设计和实现有了更深刻的认识,同时也提升了我的编程技能。我相信,这些知识和经验将对我未来的学习和职业发展产生积极影响。

0 commit comments

Comments
 (0)