全部学习汇总: 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希望学生所做的尝试还是第一种尝试。