实验六-分页存储器管理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上海应用技术学院
程序设计语言实验报告
实验名称分页存储器管理实验序号实验六实验日期
姓名学号指导教师
专业计算机科学与技术班级成绩
一、实验目的及要求
学习i386处理器的二级页表硬件机制,理解分页存储器管理原理。
查看EOS应用程序进程和系统进程的二级页表映射信息,理解页目录和页表的管理方式。编程修改页目录和页表的映射关系,理解分页地址变换原理。
二、实验环境
Windows XP;Tevation OS Lab。
三、实验内容
1 准备实验
按照下面的步骤准备本次实验:
1.启动OS Lab。
2.新建一个EOS应用程序项目,如图1。
图1
2 查看EOS应用程序进程的页目录和页表
使用OS Lab打开本实验文件夹中的memory.c和getcr3.asm文件如图2(将文件拖动到
OS Lab窗口中释放即可打开)。按照下面的步骤查看EOS应用程序进程的页目录和页表:
图2
1.使用memory.c文件中的源代码替换之前创建的EOS应用程序项目中EOSApp.c文件中
的源代码,如图3。
图3
2.右键点击“项目管理器”窗口中的“源文件”文件夹节点,在弹出的快捷菜单中选择
“添加”中的“添加新文件”。
3.在弹出的“添加新文件”对话框中选择“asm 源文件”模板。
4.在“名称”中输入文件名称“func”。
5.点击“添加”按钮添加并自动打开文件func.asm,如图4。
图4
6.将getcr3.asm文件中的源代码复制到func.asm文件中,如图5。
图5
7.按F7生成修改后的EOS应用程序项目,如图6。
图6
8.按F5启动调试,如图7。
图7
9.应用程序执行的过程中,会将该进程的二级页表映射信息输出到虚拟机窗口和OS Lab
“输出”窗口中。
10.将“输出”窗口中的内容复制到一个文本文件中。
3 查看应用程序进程和系统进程并发时的页目录和页表
需要对EOS应用程序进行一些修改:
1.结束之前的调试。
2.取消EOSApp.c第121行语句(该语句会等待10秒)的注释。
3.按F7生成修改后的EOS应用程序项目。
4.按F5启动调试,如图8。
图8
5.在“Console-1”中会自动执行EOSApp.exe,创建该应用程序进程,利用其等待10秒
的时间,按Ctrl+F2切换到“Console-2”。
6.在“Console-2”中输入命令“mm”后按回车,会将系统进程的二级页表映射信息输
出到虚拟机窗口和OS Lab的“输出”窗口,输出内容如图2(b)。注意,在图2(b)中添加了一些空行,方便与图2(a)比较。应用程序在等待10秒后又会输出和图2(a)一致的内容。
7.将“输出”窗口中的内容复制到一个文本文件中。
控制台命令“mm”对应的源代码在EOS内核项目ke/sysproc.c文件的ConsoleCmdMemoryMap函数中(第246行),与memory.c文件中的源代码基本类似。
4 查看应用程序进程并发时的页目录和页表
需要对EOS应用程序进行一些修改:
1.结束之前的调试。
2.取消EOSApp.c第201行语句(该语句会等待10秒)的注释。
3.按F7生成修改后的EOS应用程序项目。
4.按F5启动调试,如图8。
图8
5.在“Console-1”中会自动执行EOSApp.exe,创建该应用程序进程,利用其等待10秒
的时间,按Ctrl+F2切换到“Console-2”。
6.在“Console-2”中输入“eosapp”后按回车,再执行一个EOSApp.exe。
7.由EOSApp.exe创建的两个并发进程会先后在各自的控制台和“输出”窗口中,输出各
自的二级页表映射信息。输出的内容如图3。
8.将“输出”窗口中的内容复制到一个文本文件中。
5 在二级页表中映射新申请的物理页
首先验证第一个结论:
1.新建一个 EOS Kernel项目。
2.打开ke/sysproc.c文件和本实验文件夹中的MapNewPage.c文件,如图9。
图9
3.在sysproc.c文件的ConsoleCmdMemoryMap函数中找到“关中断”的代码行(第278
行),将MapNewPage.c文件中的代码插入到“关中断”代码行的后面。
4.按F7生成该内核项目。
5.按F5启动调试。
6.在EOS控制台中输入命令“mm”后按回车。
7.OS Lab会弹出一个调试异常对话框,选择“是”调试异常。
8.黄色箭头指向访问虚拟地址0xE0000000的代码行。由于该虚拟地址没有映射物理内
存(图2和图3中都未映射该虚拟地址),所以对该虚拟地址的访问会触发异常。9.结束此次调试,然后删除或者注释会触发异常的该行代码,如图10。
图10
按照下面的步骤验证其它结论:
1.按F7生成该内核项目。
2.按F5启动调试。
3.在EOS控制台中输入命令“mm”后按回车。
4.在OS Lab的“输出”窗口中查看执行的结果,并将“输出”窗口中的内容复制到一个
文本文件中,如图11。
图11