Linux-0.11操作系统实验6-地址映射与共享
实验环境: 地址映射与共享 实验理论: Linux-0.11操作系统实验6理论-地址映射与共享 实验任务: 用 Bochs 调试工具跟踪 Linux 0.11 的地址翻译(地址映射)过程,了解 IA-32 和 Linux 0.11 的内存管理机制; 在 Ubuntu 上编写多进程的生产者—消费者程序,用共享内存做缓冲区; 在信号量实验的基础上,为 Linux 0.11 增加共享内存功能,并将生产者—消费者程序移植到 Linux 0.11。 跟踪地址翻译过程 这节实验的目的是用 Bochs 的调试功能获取变量的虚拟地址映射的物理地址。实验过程跟着实验楼的描述进行即可。此处简单记录需要注意的几点: 根据实验中变量 i 保存在 ds:0x3004 这个地址,通过查询6.3段表,注意要使用自己本机实验环境的LDT表的物理地址: 实验楼中数据: “0x a2d0 0068 0x000082 fa ” 将其中的加粗数字组合为“0x00faa2d0”,这就是 LDT 表的物理地址 本机实验环境数据: 得到线性地址为 0x10003004 后,接下来通过页表将线性地址映射到物理地址,注意要使用自己本机实验环境的页框号,得到变量i的物理地址: 实验楼中数据: 线性地址 0x10003004 对应的物理页框号为 0x00fa7,和页内偏移 0x004 接到一起,得到 0x00fa7004,这就是变量