diff --git "a/source/_posts/2024\347\247\213\345\206\254\345\255\243\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-\344\273\243\344\277\212\345\213\203.md" "b/source/_posts/2024\347\247\213\345\206\254\345\255\243\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-\344\273\243\344\277\212\345\213\203.md" new file mode 100644 index 0000000000..c940b9cc17 --- /dev/null +++ "b/source/_posts/2024\347\247\213\345\206\254\345\255\243\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-\344\273\243\344\277\212\345\213\203.md" @@ -0,0 +1,32 @@ +--- +title: 2024秋冬季开源操作系统训练营第三阶段总结报告-代俊勃 +date: 2024-12-02 14:54:15 +tags: +--- + +## 第三阶段 +很高兴能进入第三阶段,三周的课程由浅入深,石磊老师讲的非常好,可惜中间第二周第三周比较忙,就只是听完了课程,实验上完成了第一周的前两课的实验,以及尝试去做了挑战题目,实现了一个内存池分配算法。后续会继续学习。 + +## Unikernel + +一种组件化的内核构建方式,根据需求可以快速实现轻量级的部署,可以说是微服务部署的理想容器。 + +### print_with_color + +对已有的println功能实现扩展,通过ANSI码控制颜色,写了一个基于时间戳的随机函数实现每次输出时颜色随机,通过随机的开始颜色和结束颜色计算每个字符的颜色实现渐变效果。 + +### 支持HashMap + +直接引入了hashbrown库,接管之前调用的std的collections。 + +### bump内存分配算法 + +这个比较简单,用两个指针分别从两端分配byte和页,当然缺点很明显,已经回收的资源无法继续分配,只有全部回收后才会将指针归零。 + +### 实现特定的内存分配算法 + +这里首先是利用bump算法进行尝试,结果达到了63轮,之后加入了回收空间记录list,提高不多,也分别尝试自己实现了Buddy和Tlsf抽了一个文件,但是build一直过不去。 + +## 学习心得 + +通过这次学习,对Unikernel的理解加深了很多,第四阶段也打算做这一个阶段的实习,学完之后还要系统的学习一下linux操作系统。 \ No newline at end of file diff --git "a/source/_posts/2024\347\247\213\345\206\254\345\255\243\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\345\233\233\351\230\266\346\256\265\346\200\273\347\273\223\346\212\245\345\221\212-\344\273\243\344\277\212\345\213\203.md" "b/source/_posts/2024\347\247\213\345\206\254\345\255\243\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\345\233\233\351\230\266\346\256\265\346\200\273\347\273\223\346\212\245\345\221\212-\344\273\243\344\277\212\345\213\203.md" new file mode 100644 index 0000000000..e45b70adc2 --- /dev/null +++ "b/source/_posts/2024\347\247\213\345\206\254\345\255\243\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\345\233\233\351\230\266\346\256\265\346\200\273\347\273\223\346\212\245\345\221\212-\344\273\243\344\277\212\345\213\203.md" @@ -0,0 +1,11 @@ +--- +title: 2024秋冬季开源操作系统训练营第四阶段总结报告-代俊勃 +date: 2024-12-22 10:57:42 +tags: +--- + +第四阶段我的选题是项目1 在Unikernel 中支持Linux应用 +第一周是base阶段,通过几个实验深刻了解程序切换,程序运行的基本原理,使用了一种函数调用的方式取代特权集切换。 +第二周要实现对于Linux应用的支持,或者说是基于linux下的libc的内核态调用的函数调用实现,归其本质也就是要将我们的函数表结合到生成的汇编里去。 +这个阶段主要是基于musl——一种精简的libc,c程序基于musl的基础库进行编译,也相当于执行是时候运行的是musl中的代码,所以我们需要对这块进行替代即可。 +第三周一直在忙别的事情,就没有继续深入下去,这是比较遗憾的,通过参加这次训练营也暴露了我对于很多基础知识的不了解,这也是转专业人员的通病,我正在将目光放回到这些基础课上,希望下期训练营能够顺利毕业! \ No newline at end of file