diff --git "a/source/_posts/2024\347\247\213\345\206\254\345\274\200\346\272\220\346\223\215\344\275\234\347\263\273\347\273\237\350\256\255\347\273\203\350\220\245\347\254\254\344\270\211\351\230\266\346\256\265\346\200\273\347\273\223\346\212\245\345\221\212-XiangyuTu.md" "b/source/_posts/2024\347\247\213\345\206\254\345\274\200\346\272\220\346\223\215\344\275\234\347\263\273\347\273\237\350\256\255\347\273\203\350\220\245\347\254\254\344\270\211\351\230\266\346\256\265\346\200\273\347\273\223\346\212\245\345\221\212-XiangyuTu.md" new file mode 100644 index 00000000000..bc4b21ef668 --- /dev/null +++ "b/source/_posts/2024\347\247\213\345\206\254\345\274\200\346\272\220\346\223\215\344\275\234\347\263\273\347\273\237\350\256\255\347\273\203\350\220\245\347\254\254\344\270\211\351\230\266\346\256\265\346\200\273\347\273\223\346\212\245\345\221\212-XiangyuTu.md" @@ -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 的原理,对操作系统的设计有了更深的认识。 \ No newline at end of file