MIT6.s081: lab5 PageFault
先说结论过了所有的测试点,我是能够过那个 usertests ,但是 lazytests 会一直卡在 out of mem 这个测试点,而且怎么也没法过,折腾了好久真的无语。 这个原因是因为 sbrk 是懒加载,我们直接用 addr+n 表示 proc 的 size。这样有个问题,xv6 最大的虚内存实际上是一个 MAXVA ,如果不加限制的话,walk 阶段就会 walk 到 MAXVA 导致一直 panic。解决办法其实很简单,在 uvmunmap 代码加个限定条件,强制 va 不能超过 MAXVA。 懒加载代码: int lazy_alloc(uint64 addr){...
more...