-
Notifications
You must be signed in to change notification settings - Fork 452
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add 2024秋冬开源操作系统训练营第三阶段总结报告-XiangyuTu
- Loading branch information
Showing
1 changed file
with
20 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
--- | ||
|
||
title: 2024秋冬开源操作系统训练营第三阶段总结报告 | ||
date: 2024-12-05 22:00:00 | ||
tags: | ||
- author:XiangyuTu | ||
- repo:https://github.com/XiangyuTu/oscamp | ||
--- | ||
|
||
第三阶段的时候学校事务相对来说比较忙,因此只简单地写了 `print_with_color`, `hashmap` 和 `mmap` 这几个较为简单的练习。 | ||
|
||
我当时参加了 `lab1` 挑战,通过针对测例优化内存分配器减少碎片来取得更高的分数。 | ||
|
||
因为 ArceOS 自带的 TLSF 分配器效率已经十分高了,因此一开始一度陷入僵局,后来偶然发现 Slab 分配器中内嵌一个 Buddy 分配器,想着能不能把它换成 TLSF 分配器,于是就开始了一系列的尝试。 | ||
|
||
将 Slab 中的 Buddy 分配器替换成 TLSF 分配器后,拿到了 260 分终于突破了 ArceOS TLSF 分配器的 170 分。 | ||
|
||
考虑到题目中的分配失败都是因为大量不连续的内存碎片导致的,通过观察测例的内存分配规律,于是我将 Slab 中最小 64 Bytes 的大小提高到了 96 Bytes,这样虽然会浪费一些内存,但是可以减少碎片,最终拿到了 330 分,并得到了常规操作榜第 9 名的成绩。 | ||
|
||
通过第三阶段的学习,巩固了我对操作系统的了解,并提升了我对内存分配算法的理解;同时也让我了解到 Unikernel 和 Monolithic Kernel 的区别,Hypervisor 的原理,对操作系统的设计有了更深的认识。 |