报告编写时间好像有点晚
第一阶段总结报告
大概是寒假的时候,在网络上寻找一些学习操作系统的资料时,接触到了rcore lab和这个训练营,然后看到有一起学习的群友报名了这个训练营之后,立马顺着链接跟过来了。
在此之前并没有编写过类似的操作系统,了解学习过一些操作系统的知识,而且也对rust不是很熟悉。
rust语言
在参加这个训练营之前,是尝试学习过rust的,当时rust吸引我的原因不是因为它在内存安全方面的独特特性,而是它是一门现代的,系统级编程语言。而我确实也需要这样的语言(尝试为c语言寻找更加现代的替代)。不过当时由于rust特有的难以入门的特性和陡峭的学习曲线,随后便暂时放弃了这个语言的学习。
在参加了这个训练营之后,重新捡起来rust语言,发现也并不是想象中的那么可怕,其语言特性的设计理念,也可以理解。而且从这里,也进一步的体验到了其作为一门现代语言的好处。例如包管理器(安装新的工具链太方便啦),更好的lsp服务器(感觉比clangd强),以及语言提供的恰到好处的抽象设计,都让人感到很舒心。而且作为一门系统级语言,也很方便的可以在之后帮助我编写运行在一些裸机上的应用程序。
rustlings
这个练习前半部分基本都是和语言特性相关的内容,做起来还是很迅速的,基本上没有花费很长的时间便完成了这一部分的内容。但是对于后面的算法题部分,便开始困难起来了。倒不是这些数据结构和算法不清楚,如果使用c语言实现它们,那么将易如反掌,但是对于自己不熟悉,且时时刻刻强调内存安全的rust语言而言,便显得很困难。好在在查阅资料和不断的尝试下,还是将这一部分内容给完成了。
第二阶段总结报告
第二阶段的前三个实验,基本上是连着几天完成的,最后两个实验拖慢了几天。
总的来说,对于这一部分,还是学到了很多知识。
首先说一说riscv方面吧,对于这一方面相对更加熟悉,之前也编写过riscv的处理器和模拟器,并且也使用c语言编写过裸机应用,对于riscv相关的知识方面,还是很顺滑的便掌握了。
对于rust语言,写到这个阶段已经比第一阶段顺手多了,不过在使用这个语言时使用的很多设计理念,例如资源获取即初始化,等等设计方面的考量,还是学习到了很多。或许在完成这一部分内容之后,可以试着使用rust去重构之前写过的一些c语言项目了(乐)。
随后是对于操作系统相关的知识,之前学习过一些操作系统的概念和知识,但是对于真正的将操作系统实现出来,还是第一次尝试做出来。以前学习操作系统时还尝试看过一些linux内核设计相关的书籍,最后的结果是看的比较稀里糊涂。通过这次操作系统设计之后,或许之后入门linux能够更加顺利一些。