0%

2024秋冬开源操作系统训练营第三阶段总结报告

第三阶段的时候学校事务相对来说比较忙,因此只简单地写了 print_with_color, hashmapmmap 这几个较为简单的练习。

我当时参加了 lab1 挑战,通过针对测例优化内存分配器减少碎片来取得更高的分数。

因为 ArceOS 自带的 TLSF 分配器效率已经十分高了,因此一开始一度陷入僵局,后来偶然发现 Slab 分配器中内嵌一个 Buddy 分配器,想着能不能把它换成 TLSF 分配器,于是就开始了一系列的尝试。

将 Slab 中的 Buddy 分配器替换成 TLSF 分配器后,拿到了 260 分终于突破了 ArceOS TLSF 分配器的 170 分。

考虑到题目中的分配失败都是因为大量不连续的内存碎片导致的,通过观察测例的内存分配规律,于是我将 Slab 中最小 64 Bytes 的大小提高到了 96 Bytes,这样虽然有可能浪费一些内存(在所需内存小于 96 Bytes 的情况下),但是可以减少内存中不连续的碎片,最终拿到了 330 分,并得到了常规操作榜第 9 名的成绩。

通过第三阶段的学习,巩固了我对操作系统的了解,并提升了我对内存分配算法的理解;同时也让我了解到 Unikernel 和 Monolithic Kernel 的区别,Hypervisor 的原理,对操作系统的设计有了更深的认识。