一、前言
毕业之后一直工作都是在做c嵌入式驱动开发,是和同事闲聊的时候了解这个项目的就开始学下去了 从2024春季就已经开始学了但是因为一些事情耽误了就没有完成
对我个人来说主要是好奇想看看经常看到的所谓写操作系统是做什么,以及我在工作中也会看到rust的一些内容对这个语言也很好奇
二、基础阶段
在基础学习的时候我认为这样的错误记录是很有必要的
因为我基础并不好经常对于书上看到的方法看到就忘了 实际写起来我最大的感受就是
1、如果有多个数据结构嵌套我很容易就搞不清哪里要复制哪里不复制
2、闭包按照我理解就是一个函数指针 在传递闭包的时候一开始没理解总是搞不清楚到底是怎么回事
以及在完成一阶段之后我才安装了rust-analyer也算是踩坑了把 有这个插件才发现可以很快就发现错误不用在一次次编译
三、OS专业阶段
专业阶段在整个学习的过程中对我而言最困难的是第四章和第八章
在第四章 我觉得内存的边界条件卡住了很久 主要还是理解不够 明白了 地址空间 应用空间 需要转换
也看明白了虚拟地址的寻址方法 但是真的感觉新的文档没有图我一开始没理解的就是 他三级页表怎么寻址的过程
后面才真的理解上一级页表的值代表的是下一级要去找的page 再再下一级page上找到对应页表项 才实现了多级页表的寻址
整体来说我觉得这个专业阶段 首先文档需要图
并且我发现只看一遍效果很差 需要边看边记 并且对于代码讲解最好是能够记录并且依次添加注释 明白每一步再做什么不是只看文档中的讲解就过一遍就结束
以及我觉得再实验过程中最重要的是搞清楚各个结构体所代表的实际意义
并且可以集中在图上展示 不然我在做ch6一开始总是错就是 没梳理清楚 disk_inode inode OS_inode还有目录项分别都是些什么 导致ch6经常找错
于是我就在草稿纸上根据理解写了我对于这些数据结构的理解和关联很快就解决了
实验的时候还有一点 有时候我总喜欢通过结构体之间的关系来找对应的数据 但是在rust里这样做我觉的很复杂
最好的方式就是在容易得到的结构体中保存需要的数据