4-5 课堂练习4.3:段页式内存管理
段页式管理就是将程序分为多个逻辑段,在每个段里面又进行分页,即将分段和分页组合起来使用。这样做的目的就是想同时获得分段和分页的好处,但又避免了单独分段或单独分页的缺陷。 本实训分析 Linux 0.11 的段页式内存管理技术。
第1关进程创建前后页目录和页表的变化
任务描述
本关任务分析版本 1 内核回答问题: 1.在 0 号进程执行 fork 系统调用之前,线性地址空间到物理地址空间的映射关系是怎样的? 2.在 0 号进程刚执行完 fork 系统调用时,线性地址空间到物理地址空间的映射关系是怎样的? 3.在 0 号进程执行 fork 系统调用前后,页目录发生了怎样的变化?
相关知识
为了完成本关任务,你需要掌握: 1.如何跟踪到一个系统调用的陷入指令(int 0x80)执行之前; 2.在 bochsdbg 中,如何跟踪到 0 号进程执行 fork 系统调用之前?如何继续跟踪到刚执行完该 fork 系统调用? 3.如何分析线性地址空间到物理地址空间的映射关系; 4.如何直接显示线性地址空间到物理地址空间的映射关系; 5.在 bochsdbg 调试模式下,如何判断当前进程是几号进程; 6.如何计算一个线性地址对应的物理地址; 7.如何查看 CR3 寄存器的值; 8.如何计算一个线性地址的高 10 位和中间 10 位的值; 9.页目录项和页表项的格式是什么; 10.如何查看某个页目录项的值; 11.在 bochsdbg 中,如何直接查看某物理地址处的值。
环境准备
本关卡使用版本 1 内核进行分析,内核文件存放在/data/workspace/myshixun/exp1
中。
编程要求
通过 gdb 和 dbg 调试查找答案,将第一关的答案填写在/data/workspace/myshixun/第一关.txt
中。 本关任务分析版本 1 内核回答问题: 1.在 0 号进程执行 fork 系统调用之前,线性地址空间到物理地址空间的映射关系是怎样的? 2.在 0 号进程刚执行完 fork 系统调用时,线性地址空间到物理地址空间的映射关系是怎样的? 3.在 0 号进程执行 fork 系统调用前后,页目录发生了怎样的变化?