1661_MIT 6.868 JOS page_init实现的初步尝试

文章详细介绍了在Unix操作系统学习过程中,对page_init接口的分析,以及boot_alloc接口在page_init之后的作用。作者注意到boot_map_region和page_insert接口尚未实现,并计划后续实现和分析这两个接口,以进一步理解存储管理中的链表设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com)

         最近的几次学习笔记的整理都有一点拿不准,不是很确定自己所做的是否准确。不过,如果战线跨得太长,可能整个新建立的知识体系会垮掉。因此,还是一步步做梳理,做记录。即便是后面发现了错误重新修改,暂时也得让部分学习整理的信息定稿。

         这一次来看一下page_init()接口的实现,这个是在boot_alloc()接口发挥作用之后进行的。

         本来还想借助于boot_map_region()和page_insert()接口来辅助理解,但是看到后面发现这俩接口其实是没有实现的,需要后续去实现。

         这里的这部分注释比较有价值,值得注意的有几点:第一,pages的信息主要是对引用的页面进行统计,而没有引用的界面则在链表中进行维护;第二,boot_alloc接口在这个接口调用之后,基本就完成使命了,不会再使用了;第三,说明了后续的存储管理该使用什么接口。

         这里的注释讲解了接下来的设计的思路和要求,说明了哪一些存储是不能够设置为可用也就是不可以在存储分配中分配给软件做存储申请应用的。

         这个是按照上面的4条要求做的一个简单的设计实现,其中结构体的pp_ref成员可能有多种数值,但是当这个数值为0的时候应该是没有被引用的时候,这个也是最初给出来的示范代码的设计。不过代码跟实际的情况并不相符,因此删除了之后进行了上面的修改。

         而前面看过的这个调用,也是这个接口在整个系统中的唯一一次调度。接下来,存储的管理可能得基于这个链表的操作来实施了。继续往下的分析,应该暂停下面接口的分析,先去把上面提到的boot_map_region()以及page_insert()接口的实现。感觉上,这两个接口中应该能够体会到更多链表设计的意图。

         这一次的梳理暂且到此,后面,先完成上面两个接口的实现与分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值