lab3 主要是页表相关,难度突然提高了好多,遇到了无数个坑,太难了。
打印页表
第一个进程启动时打印页表内容
内容分析:
… 0:
… … 0:
… … … 0:标志位0x1f,用户可以访问,是代码,全局变量页表
… … … 1:标志位0x0f,用户不可以访问,就是守护页,因为栈是往下增长的,防止用户栈增长到守护页,最多只能到栈底
… … … 2:标志位0x1f,表示堆栈
… 255:
… … 511:
… … … 510:标志位0x07,可读写,是trapframe页,用来恢复和保存寄存器的页
… … … 511:标志位0x0b,可执行可读,trampoline页
实现:
kernel/vm.c
里添加,递归实现即可
每个进程一张内核页表
目前xv6的实现里,