1674_MIT 6.828 xv6延迟页面分配的实现

文章介绍了对GreyZhang/g_unix项目中sys_sbrk接口的修改,通过屏蔽原有分配接口并添加错误处理来避免未分配页面的直接使用。作者遇到了类似错误提示,发现是页面未分配的问题。通过在trap处理中增加新的case来解决这个问题,测试结果显示修改有效,但可能与作业期望的解决方案不符。

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

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

         前面刚刚把《Homework xv6 lazy page allocation》的网页做了一个简单的翻译整理,这一次做一下里面的试验尝试。

         先按照提示修改sys_sbrk()接口,这个首先屏蔽掉49、50行,这是之前存储分配的接口。

         参考这里的两点要求,实现上面的修改就非常简单了。接下来,做一个测试。

         测试的时候,出现了类似说明中错误提示。

         而这部分,是作业说明中的要求。那到底是出了什么问题呢?其实是出现了页面没有分配直接使用的情况。

         代码的修改方法如上,这里我直接加了一个break,这样相当于把后面的这段提示直接给毙掉了。这也会防止后面出现的杀进程的情况。修改后,编译测试没有问题。

         这个是修改后的一个运行测试效果。

         其实,关于这种错误的处理应该对应trap中的页错误。这里的分类可以从trap.h中看到,这里定义了用到的所有的分类。那么,对于上面的问题处理,其实可以增加一个分支处理。这样,把这一段代码进行一个拆分处理。

         这一次的实现增加了一个case,而这里增加大括号的原因是能够在这里划分出来一个代码块以进行变量定义的处理。

         这样修改之后,测试出来的效果与前面的修改方式是一致的。不过,从HW的提示信息来看,我觉得HW希望学生所做的尝试还是第一种尝试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值