0%

2025春夏开源操作系统训练营总结-那晋宁

第一阶段总结

第一阶段写了rustlings,以前就写过一遍,不过这10个数据结构题还是挺折磨的,跟编译器搏斗。

第二阶段总结

第二阶段写了rCore的lab,以前看过一半xv6的lab,但是已有的代码看不太懂,最后烂尾了。感觉做这种OS lab最大的困难就是充分理解框架代码,好在rCore的指导书足够详细,代码也比xv6简单一些,最后做完了,写的过程比较顺利,除了最后一个检测信号量的时候,对信号量的更新和对检测用的数组的更新顺序顺手写反了,卡了一天半。。。看指导书的时候记了一些笔记在我的blog上,学到了很多写rust的技巧,闭包、链式调用之类的,以前对OS只有理论上的积累,写完之后也有了一些实践经验。

第三阶段总结

第三阶段正式接触到 ArceOS,写了6个小练习,感觉难度都不大,设置练习的目的应该是熟悉 ArceOS

  • print_color:在 putchar, println!, 或者 print-colormain 函数里改一下,加入颜色代码的部分就好了。
  • support_hashmap:考虑到手搓一个 hashmap 比较麻烦,而且这也不是OS训练营的重点,直接把 hashbrownhashmap 拿来用了。
  • alt_alloc:bump非常简单,byte_pos 从前往后,page_pos 从后往前,把对应的接口实现完就好了。
  • ramfs_rename:找到目录下名为 old_namenode,然后先从这个 dirindex 中删除 (old_name, node),再插入 (new_name, node)
  • sys_mmap:找到一块可用的内存,设置好映射,把文件的内容读取进来即可。
  • simple_hv:改一点异常处理函数的分支,跳过异常并把 sepc + 4,第一次了解到 hypervisor 都干了什么,以前只听说过这个名字。

然后又过了一遍 ArceOSdeepwiki,接触到了“模块化”这个概念,感觉挺有趣的,和rust的 module 很好的结合在了一起,降低了不同部分之间的耦合,用户程序通过用户库的 API 找到对应的 module。在构建内核时像搭积木一样选需要的部分,在一些嵌入式场景中可以量身定制,想要扩展成宏内核也很容易,可维护性也很高。