0%

yake_arceos_blog

rcore第二阶段

rcore的五个实验,捋清楚代码,就比较好做。这是我第一次捋这么多代码量的项目,学到了很多。以下几点是我理解并做出实验的心得。

  1. 不需要全部细节搞懂。理解调用过程并不需要关注所有细节。
  2. 先提出问题,再去找答案。可以用gpt辅助提问题。
  3. debug其实后面用的都少了,多用log。
  4. 关注层次,有些理解不了就是站的角度不对,从内核视角看,从用户视角看,从文件系统各个层次看,等等,可以切换视角来整体性的把握代码。
  5. 有些是代码写出来是方便查看,但并不一定有啥功能上的作用。所以有些地方不用太纠结。
  6. 画图!只要你能画出内存、追踪寄存器、理解调用过程,那其实内核没啥难的,每一步都是可以追踪的。多画图让自己可视化的把握这整个过程。尤其是ch8那个死锁算法,我自己画图,把整个过程都画一遍,案例自己走了一遍,那就很清晰了。
  7. 读代码不要线性读过去。可以让gpt梳理流程再读。同时可以一个变量一个变量追踪,上来全部看会云里雾里的。
  8. 个人感觉makefile和一些rust嵌入式可以搜索b站相关资料学习一下。有这两个基本技能就能先对内核代码是怎么生成的、为啥是内核、怎么写的,有个框架性的把握。
  9. 不需要让自己了解很多前置知识才能开始,盯着具体问题去思考补啥知识。
  10. 对于每个题目,印象最深的就是多体会案例吧,毕竟是练习用的,很多情况不考虑的。
  11. 文档第一遍应该是略看,大概知道一下知识,最重要的是自己捋代码。
  12. 印象最深的是死锁那里,没有drop导致多重借用了。

arceos第三阶段

  1. 一开始不理解feature怎么传递的,感觉搞不懂了,心态爆炸。但是往后做就理解了,em所以前期真的不用纠结太多我觉得。
  2. arceos这里在toml里面一堆文档阿,先看这个会有更宏观的把握。
  3. 最难的感觉就是开始,了解了re-export这个机制,重新认识了一下rust的项目管理,之后就没啥了。
  4. 这里印象最深的是文件系统和对齐,前者再让我体会了lsp机制不完善吧,然后通过条件编译管理以达到组件化的效果也是学到了,我看大多数都会有一个接口或者一个默认的实现,然后再用条件编译来管理不同的实现,估计第四阶段会进一步用到吧。