题前
学习os一年,看过两个教程哈工大的linux0.11和清华的ucore,拿起放弃好多次,算是坚持下来入门了。一直以来想写个简单的os,奈何功力尚浅,迟迟不敢动手,今年有幸参加了summerofcode2020线上学习,对我来说是个很不错的实践机会,开始动手,边学习边搭建自己的os环境,为后期学习高级操作系统做准备
总结
本次实习要求用rust+riscv实现os,对我来说都是新知识,就按部就班的按照step0的要求建立自己的学习步骤,rust看了下语法后直接实现基本的数据结构,os中的页面分配算法,调度算法等本质就是对基本数据结构的操作,算法原理不是很强。收获比较大的是学习riscv汇编吧,我以为我会被这个困住,像当初学习Intel和AT&T汇编那样,是刚开始我在尝试写第一个riscv汇编时候遇到点问题,后面学习csr特权级指令没遇到什么问题,以后再学习汇编指令啥的不会是什+么问题了。其次逼着自己看youtobe视频教学(riscv如何控制SiFive闪烁灯),国外视频似乎不是很难了,毕竟我英语听力一塌糊涂。
os方面,基本来说就那几块,中断,系统调用,进程线程管理这几块原理代码我在学其他os课程时候理解了,剩余的就是内存管理部分,这部分主要是页表的建立,学哈工大的课程时候有个实验是根据虚拟地址查看物理地址,并读取物理地址的值来直观感受MMU翻译过程,本次中也试了下,rust写os内存管理这部分确实简单多了,通过本次学习弥补了不少以前的知识盲点,还有一个就是设备的管理,这两块通过这次实习消除了不少盲点,其他方面就是巩固了OS的一些基础知识
展望
本次实习对我来说帮助很大,学到不少知识。从实习的实验项来说,确实不多,我只完成了实验指导0-6步,其他的本来想留出一周时间来做下,没时间了。不过这没什么,一开始我就想的就是按照实验指导书后的步骤从0一步步搭建到6,通读下rcore-tutiorial代码以及想清楚这么设计的合理性。接下来的时间,我打算去迭代下本次做的这个os,学习os没什么捷径,只有一句话,绝知此事要躬行!!!
相关 repo
0%