第1关:第一次页故障任务描述
本关任务通过分析版本 1 内核回答问题:
系统的第一次页故障发生时:
1.当时正在执行几号进程? 正在访问的线性地址是多少?
2.该线性地址当时对应的页表项是什么?被映射到的物理地址是什么?
3.该页故障处理完后,该线性地址对应的页表项是什么?被映射到的物理地址是什么?
4.引发这次页故障的指令地址是什么?
5. main 函数中的 fork 系统调用的陷入指令的地址是多少?
相关知识
为了完成本关任务,你需要掌握:
1.如何跟踪到第一次页故障发生;
2.在 bochsdbg 调试模式下,如何判断当前进程是几号进程;
3.如何得到一个函数或全局变量的地址;
4.如何知道是对哪个线性地址的访问引发了页故障;
5.如何跟踪到一个中断/异常处理程序对应的 iret 指令;
6.如何分析线性地址空间到物理地址空间的映射关系;
7.如何直接显示线性地址空间到物理地址空间的映射关系;
8.如何计算一个线性地址对应的物理地址;
9.如何查看 CR2 和 CR3 寄存器的值;
10.如何计算一个线性地址的高 10 位和中间 10 位的值;