第一阶段
这个训练营几年前就知道了,看过了好几届它的宣传,以前也进入过一次网络教室,但并没有报名。
主要是不知道这个东西是什么,和自身领域隔得很远。再加上平常写软件程序,不知道这些底层知识和算法也一样可以写代码。
今年才报名,也没什么原因,想了解就参与咯。对此没什么学习目标,能学到我想学到的东西就够了,
学到不想继续了解为止。(实话)
这阶段的任务是完成 rustlings。
花了两个多小时完成,完成了 rustlings 前 90 多道题。那些题在几年前就做过了,中途感觉在浪费时间。
第二天完成 rustling 剩余十多道题:算法题主要花在查那些算法知识上,因为平常写代码不会用到算法。
写完算法题,开始觉得没浪费时间了。
提前进入第二阶段去自学 rCore 那本书,除了熟悉的 Rust 部分,其余部分我一无所知,看得非常吃力。
不过这不属于第一阶段的总结了。仍在学习路上。
第二阶段
这阶段对我来说太过于挑战了,围绕《rCore-Tutorial-Book-v3》经历了几个过程:
- 作为一个非科班的 coder,我的知识体系里面没有操作系统的任何具体知识,所以第零章对我来说特别新鲜
- 然后,进入第一章后,我对除了 Rust 之外的几乎所有的东西都很陌生,比如指令二进制表示与各种含义。
所以为了弄清楚它们,需要经常问 AI 和查 riscv 手册。 - 第二、三章:依旧是在弄清楚汇编、寄存器这些知识上狂补,总结了一些笔记发布在自己的博客上,然后
当周问 kimi 的时候,无意发现我的博客链接被作为那个问题的参考资料之一,哈哈哈,有成就感了。 - 第四章开始是一个分水岭,对汇编之类的细节可以觉得不必死抠,但马上被抽象的概念绕进去了,然后我不再记
笔记了,因为主要是理解为主,只关注“是什么、怎么做”这些重点,弄清楚内存映射的基本步骤。 - 随后的章节,我开始以精简版的 tutorial 为主,重点看怎么做,从代码出发,然后不能理解的地方才去看书里的解释。
花时间最多的地方是内存映射和银行家算法上:
- 内存映射:很多概念(物理地址、虚拟地址、页表、页表项)同时出现,所以需要梳理它们,然后才能串起来理解
- 银行家算法:第八章的编程题花了很久写,首先一开始没理解题目的算法描述,网上搜索一番之后,依然糊里糊涂的。
然后课件中给了我一些启发,但依然没理解。尤其是,本地测例能跑通,在 CI 上又不能通过,但 CI 没报告哪个测例不通过,
所以只能修改一点,推送给 CI。最后我在理解测例的基础上,在纸上整理思路,结合日志去思考死锁发生和没发生的情况,
弄懂了算法描述,最后修改了几次代码,通过了。
最后,还有一些时间花在工具上:比如学习 tmux、gdb,以及 git 合并冲突上。