写到这里,第二阶段就要告一段落了。rCore的文档真的写的很棒,作为一名非科班的CS爱好者,终于弥补了自己本科时期的遗憾,系统的学完了操作系统,也对git项目开发和rust有所入门。
学完之后最大的感觉是补全了自己的计算机体系结构,之前一直在学一些语言层面的语法,思考代码主要是从逻辑层面,现在能思考一些比较深刻的东西,debug能力也有所增强。
lab1算是对操作系统的基本入门,了解了用户态程序是如何一步步进入到内核态代码进行处理的。前三章读完之后,感觉分时多任务和上个月学的rtos的工作原理有点像,属于同一类系统。也对如何从0开始构建一个裸机应用,后面想试试用rust编写stm32,应该也会很方便。
lab2加深了我对虚拟地址的一些理解,之前了解过可执行文件的地址空间,当时还在想一个应用有4G的地址空间,真的能存下这么多吗?这一章对页表机制讲得很深刻,解答了我之前所遇到的一些困惑。
lab3的编写,让我对进程管理的一些api及实现有了全新的认识,之前的我只是一个pthread的调包工程师,现在对进程的实现和相关流程有了更为本质的理解。
lab4实现的文件系统,来回看了好几遍,真的挺复杂的。最终完成lab,很有成就感,学习了rust的Trait实现,后面的项目可以参考这个架构。
lab5的各种同步机制,算是对Rust同步机制的巩固,在项目中多次用到了多线程,想想挺可笑的,这些没有锁导致的问题,自己在初学阶段真的都有犯过,后面才有一步步接触到了这些同步机制。
看完整个RCore教程,完成了第二阶段的实验,才发现自己浪费了太多时间在一些开发技术上面了。学完操作系统明白了,这些技术本质上都是相通的,无非是各个语言实现的不同,以后要花重点在这些基础上,做一些更偏底层的学习。
最后,感谢训练营,感谢清华大学能提供这次机会学习操作系统,学到了很多,希望下一个阶段自己能坚持走到最后。