2023rCore 训练营第二阶段总结
参加本次rcore训练营的原因是希望找人和我一起写课程来督促我成长,因为本人做事很容易烂尾。
之前做过类似的操作系统lab,并且也用过rust,所以前三个实验还是比较顺利完成了,这次报名也是希望能进一步参与后面的项目。
下面简单总结一下在第二阶段我完成的各个实验情况。
ch3
rcore 的前几个实验难度不是很大,读懂代码结构,按照需求去实现就行了。
本次实验在要实现一个当前任务信息查询调用。
而这个系统调用sys_task_info调用的实现建立在对TaskManager的修改的基础上。
我们只需要在TaskManagerInner中的TaskControlBlock里添加syscall_times来统计该任务的各个系统调用次数的统计,并在系统调用时,以及任务切换时进行相应数据的修改就行了。
ch4
本次实验是在有了分页机制的前提下,重写了ch3中的sys_write和sys_task_info。
由于我们引入了虚拟存储机制,所以要把数据写到任务地址空间需要根据我们的页表得到其实际物理地址再写入。mmp与munmap都已在memroy_set中帮我们实现,我们只需要简单封装一下即可,同时我们要注意访问权限的管理。
ch5
本次实验任务简单,spawn一个新任务就是创建一个空白子进程然后加载对应程序即可,
总结
通过这个阶段的学习,我巩固和掌握了很多操作系统的知识,并且在实践中得到了很大的收益。
实验的逐步进行让我能够在已经写好的代码基础上增加对系统的理解并进行修改,从而使我的思维得到不断蜕变。此外,采用增加功能的实验方式让我感觉像在编写自己的操作系统,因此更加认真地学习,从中获取更多知识,并得到积极的反馈。
此外,第二阶段的实践使我的 Rust 编程技能得到了进一步提升。