欢迎来到天天文库
浏览记录
ID:15217871
大小:228.00 KB
页数:7页
时间:2018-08-02
《实验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
此文档下载收益归作者所有