实验8.分页存储器管理

实验8.分页存储器管理

ID:15217871

大小:228.00 KB

页数:7页

时间:2018-08-02

实验8.分页存储器管理_第1页
实验8.分页存储器管理_第2页
实验8.分页存储器管理_第3页
实验8.分页存储器管理_第4页
实验8.分页存储器管理_第5页
资源描述:

《实验8.分页存储器管理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、华北电力大学实验报告

2、

3、实验名称分页存储器管理课程名称计算机操作系统

4、

5、专业班级:软件1002学生姓名:赵策学号:201009020228成绩:指导教师:宋亚奇实验日期:华北电力大学实验报告一.实验目的与要求1.学习i386处理器的二级页表硬件机制,理解分页存储器管理原理。2.查看EOS应用程序进程和系统进程的二级页表映射信息,理解页目录和页表的管理方式。3.编程修改页目录和页表的映射关系,理解分页地址变换原理。二.实验仪器与设备OSLab实验集成环境三.实验方法与步骤1.准备实验1)启动OSLab。2)新建一个EOS应用程序项目。2.查看EOS应用程序进程的页目录和页表.1)使用me

6、mory.c文件中的源代码替换之前创建的EOS应用程序项目中EOSApp.c文件中的源代码。2)右键点击“项目管理器”窗口中的“源文件”文件夹节点,在弹出的快捷菜单中选择“添加”中的“添加新文件”。3)在弹出的“添加新文件”对话框中选择“asm源文件”模板。4)在“名称”中输入文件名称“func”。5)点击“添加”按钮添加并自动打开文件func.asm。6)将getcr3.asm文件中的源代码复制到func.asm文件中。7)按F7生成修改后的EOS应用程序项目。8)按F5启动调试。第页共页华北电力大学实验报告9)应用程序执行的过程中,会将该进程的二级页表映射信息输出到虚拟机窗口和OS

7、Lab“输出”窗口中,输出内容如图1。10)将“输出”窗口中的内容复制到一个文本文件中。图13.查看应用程序进程和系统进程并发时的页目录和页表4.查看应用程序进程并发时的页目录和页表5.在二级页表中映射新申请的物理页第页共页华北电力大学实验报告图2设计代码PRIVATEVOIDConsoleCmdMemoryMap(INHANDLEStdHandle){BOOLIntState;ULONGPfnOfPageDirectory;ULONGPageTotal=0;ULONGIndexOfDirEntry;ULONGIndexOfTableEntry;PMMPTE_HARDWAREpPde;

8、PMMPTE_HARDWAREpPte;ULONG_PTRPageTableBase;ULONG_PTRVirtualBase;constchar*OutputFormat=NULL;ASSERT(PspCurrentProcess==PspSystemProcess);IntState=KeEnableInterrupts(FALSE);//关中断第页共页华北电力大学实验报告ULONGPfnArray[2];MiAllocateZeroedPages(2,PfnArray);OutputFormat="Newpageframenumber:0x%X,0x%X";fprintf(S

9、tdHandle,OutputFormat,PfnArray[0],PfnArray[1]);KdbPrint(OutputFormat,PfnArray[0],PfnArray[1]);IndexOfDirEntry=(0xE0000000>>22);//虚拟地址的高10位是PDE标号((PMMPTE_HARDWARE)0xC0300000)[IndexOfDirEntry].PageFrameNumber=PfnArray[0];((PMMPTE_HARDWARE)0xC0300000)[IndexOfDirEntry].Valid=1;//有效((PMMPTE_HARDWARE)

10、0xC0300000)[IndexOfDirEntry].Writable=1;//可写MiFlushEntireTlb();//刷新快表PageTableBase=0xC0000000+IndexOfDirEntry*PAGE_SIZE;IndexOfTableEntry=(0xE0000000>>12)&0x3FF;((PMMPTE_HARDWARE)PageTableBase)[IndexOfTableEntry].PageFrameNumber=PfnArray[1];((PMMPTE_HARDWARE)PageTableBase)[IndexOfTableEntry].Val

11、id=1;((PMMPTE_HARDWARE)PageTableBase)[IndexOfTableEntry].Writable=1;MiFlushEntireTlb();//刷新快表IndexOfTableEntry=(0xE0001000>>12)&0x3FF;((PMMPTE_HARDWARE)PageTableBase)[IndexOfTableEntry].PageFrameNumber=PfnArray[1];((PMMPTE_H

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。