课后作业4.3:段页式内存管理

这篇博客主要探讨了在段页式内存管理系统中,如何处理第一次页故障,包括分析页故障时的进程状态、线性地址、页表项等关键信息。同时,讲解了如何实现父子进程间的共享内存通信,通过对`linux/init/main.c`和`linux/mm/memory.c`的修改来实现这一目标。内容涉及bochsdbg调试技巧和内存映射关系的分析。
摘要由CSDN通过智能技术生成

第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 位的值;

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ssaty.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值