总结报告
学习情况
一个月的时间转眼便以过去,经过第一阶段的学习,我收获了很多知识,但也发现了自己的种种不足。
最终可归纳为以下几点:
Rust语言的学习: 以《Rust 程序设计语言》和《Rust编程之道》为学习资料轻松上手了基本的语法操作,但是中间有点钻牛角尖,例如在对对象安全这一概念的不理解耽误了很多时间(这点需要改正)。在上手了rustlings后,通过一遍练习一遍学习知识点的方式很快就掌握了一部分的rust知识。由于缺乏实践经验,所以在写算法题时,发现自己对指针以及递归方面还是花了很大的功夫去理解的。随后在做lab的过程中发现对于模块化的知识确实要求很大,所以又回到了《Rust编程之道》中将第十章的代码全部实现了一遍。 总体来说对于rust语言的使用已经渐渐熟悉,但还是需要不断的学习和使用。
risc-v与操作系统的学习: 对于risc-v而言一开始其实是比较畏惧的,因为之前没接触甚至没听说过。由于之前由于之前学过x86汇编和一些单片机的知识,慢慢理解了一些皮毛。不过在实践过程中如果实际遇到问题该查资料的地方倒是没有含糊,也是慢慢有所收获。 操作系统由于之前在学校学习过,理论部分的知识还是能在一定的时间内重新捡起来。
lab实验: 因为怕自己rust不熟练,对lab本来比较畏惧,但为了学习也是迎着头皮往前冲。但是没想到一开始拦住我的居然是环境配置(果然装软件才是最难的),因为自己电脑版本较老,花了一天多才把环境给装配好,为此还专门写了篇博文记录了所走过的坑(或许对项目其他同学有帮助)。
接下来便是正式lab的环节:
- lab0没有遇到太大的问题,但是收获很大。了解了bootloader已经一些与硬件环境,程序依赖有关的知识,这一部分的知识在学校学习的理论知识中是从未提及过的。
- lab1是实现中断系统,中断是实现其他程序调度和硬件访问等功能的基础。有关寄存器,上下文等知识之前有了解过,所以没有遇到较大问题。
- lab2是实现动态内存分配,主要涉及动态内存,连续内存分配算法,外碎片,碎片整合等概念。由于文档部分很多内容没有提及,所以花了较多的时间去比对源码以及学习其他同学的博客。
- lab3是地址映射的内容,主要涉及虚地址与实地址的转换,页表等较为重要的概念。本实验包含较多的理论知识,花了较长的时间去查阅文档资料。并且开始有知识难以琢磨,比如页面转算法,在着方面挣扎花费了较多时间导致后期时间有所来不及。
- lab4是线程和进程,理解起来也不是很轻松,由于时间的问题,只能照着人家的代码匆匆实现了一遍,花时间读了下实验指导书,可以说学的不是很扎实。
- lab5-6同只是照着人家的代码匆匆实现了一遍,读了下实验指导书,在遇到不懂的问题时就立刻去问同学,自己的思考较少,这也是我要再补救的地方。后续打算把实验题也一同补上。
感想
老师好!我叫文博,很高兴我能来参加本次实验,记得看到有关项目的消息时已是7月3号晚,压着最后的时间线进组已经是兴奋不已。在这种激动的心情下我开始着手于项目内容的学习。
对于rust的内容对我来说都是新接触的知识,可能上手有些慢。但是后期在完成了相应的练习和算法题后,渐渐有了一定的开发能力。
有关risc-v的知识之前是从来没有接触,但是由于之前学过x86汇编和一些单片机的知识,所以慢慢也能开始理解和接受。
虽然本身近期也在学习有关操作系统的知识,但是在实际动手后发现自己还是有诸多不足,例如对页面置换,线程调度等问题上有很多自己无法理解的知识。在不断的代码实践中发觉自身对操作系统的各种细节又了更进一步了解,可以说这是参加活动后最大的收获。
作为一名正在考研期间的学生,一开始我着力于分配两者之间的平衡,在发觉自己对操作系统方面欠缺的知识量很大的情况,我便决定中途花了近一个礼拜的时间将近期考研的任务完成,紧接着投入到全天候的实验中来。
在发觉自身的诸多不足时,我选择主对结交一些同学并向他们虚心请教。在此过程中即让自己收获到了知识,也认识到了很多厉害是大神同学。当然,期间因为自己的打扰,以及一些提问的不严谨等也着实给大家添了不少麻烦,为此在实验截至之际我也对大家表示了抱歉以及感谢,并收获到了友谊。
由于本身对较底层的知识比较感兴趣,在参加完实验后更萌生了以操作系统作为以后研究方向的想法。
最后感谢陈老师能让我参加这次项目,让我有如此大的收获,希望有机会能继续在项目组中学习,希望rcore项目越来越好!