第三阶段总结报告
基本任务体验
第三阶段从十一月出开始到12月2号结束,历时1个月。就个人情况来说,由于杂事比较多,从第一周周六(11.11)开始学习Arceos到第三周周三(11.22)完成了ArceOS unikernel项目的基本任务,后面的一周半没能抽出时间探索一下最终任务还是有些遗憾(不过我希望在本次训练营结束后再花点时间实现一下最终任务的若干个Idea)。
就难度来说,个人认为ArceOS比rCore更为复杂,刚打开ArceOS工作目录就感受到了很强的压迫感,但是得益于ArceOS优秀的组件化设计思路(点赞)将内核开发的难度局限再一个模块之内大大降低了实验过程的复杂度。
第一周的early内存分配器和dtb解析比较麻烦,首先实现early内存分配器时没有考虑到需要对分配指针的地址和分配的内存块大小对齐,这个造成了许多bug,对于dtb解析需要额外学习dtb的数据格式和解析库。
第二周的主要工作量在于设计img的头部用于加载多个应用,然后在练习5遇到了一些问题卡了一段时间,主要是内联汇编的某些写法有问题导致编译器直接没有生成这部分代码(一步一步调试找到了相对靠谱的写法)。
总得来说,由于ArceOS的模块化设计,对其其中一个修改造成的影响也尽量地限制在模块内,对于其他的模块可以不用了解其实现细节而使用其暴露的api接口(通过在Cargo.toml中指定依赖路径),这样简化了开发难度。
最后感谢全体rCore开发者的努力,创造了我认为最棒的OS入门教程╰(°▽°)╯。