0%

rcore-summary-tan

实验总结

到目前,找个实验也算磕磕绊绊做完了,感触也是比较多的,有一部分内容发现还是因为基础不牢比较难完成

整个实验过程中基本上是读伪代码配合文档来理解,中间加入测试,慢慢加深理解,所以有些地方是后知后觉的,特别是在lab-3卡了将近3天,因为内存分配,页表,页表项等等概念比较抽象,还很容易混淆,最后反复阅读文档才能逐渐完成。

到目前为止完成的内容

  • rust基础语法的学习

  • rustlings的练习

  • rust完成一部分数据结构和算法

  • 实验零:基础环境的搭建

  • 实验一:中断

  • 实验二:内存分配

  • 实验三:虚实地址转换

  • 实验四(上):线程

  • 实验四(下):线程调度

  • 实验六:系统调用

主要的编程实验

  • 实现基于线段树的物理页面分配算法(支持懒分配/释放,一段连续页面的分配/释放)

  • 实现时钟页面置换算法(做了测试和性能分析)

  • 实现Stride Scheduling线程调度算法

  • 实现线程的fork

  • 实现sys_open()和sys_get_tid()的系统调用

未能完成的实验

  • 基于小根堆来实现stride scheduling算法

  • 实现进程的fork,这部分是由于物理内存的复制较为难做最后做不完了,暂时先实现了线程的fork

  • 实现sys_pipe(),原因也是因为没有实现进程的fork

  • 伙伴算法实现堆上内存分配

整个实验下来收获还是很大的,在一次次和编译器较劲中比较熟练得掌握了rust,因为之前没有上过os的相关课程,这次实验时间又比较紧,没有很多时间去补基础知识,所以就对着源码一步步调试,逐渐也能理解操作系统的工作,对于以前的一些模糊概念,比如线程进程的区别,时间片的分配,如何实现并发,时钟中断等等,都在这次实验中加深了理解。对以后的学习有很大帮助。

当然也有很多不足,比如到现在还是很难熟悉gdb调试,基本上靠输入输出完成,对于一些难调试的部分理解就比较单薄,没有测试去支持,还有一些高级的rust的语法也是一知半解,基本上是照猫画虎去写。
总之这次实验的体验还是很好,整个假期还是很充实,也完成了比自己预期高很多的任务,希望能够参加第二阶段的夏令营吧