在分页存储器管理系统中计算机应用,实验8分页存储器管理.doc

实验8分页存储器管理

华北电力大学

实 验 报 告

|

|

实验名称 分页存储器管理

课程名称 计算机操作系统

|

|

专业班级:软件1002 学生姓名:赵策

学 号:201009020228 成 绩:

指导教师:宋亚奇 实验日期:

实验目的与要求

学习i386处理器的二级页表硬件机制,理解分页存储器管理原理。

查看EOS应用程序进程和系统进程的二级页表映射信息,理解页目录和页表的管理方式。

编程修改页目录和页表的映射关系,理解分页地址变换原理。

实验仪器与设备

OS Lab实验集成环境

实验方法与步骤

1. 准备实验

1)启动OS Lab。

2)新建一个EOS应用程序项目。

2.查看EOS应用程序进程的页目录和页表.

1)使用memory.c文件中的源代码替换之前创建的EOS应用程序项目中EOSApp.c文件中的源代码。

2)右键点击“项目管理器”窗口中的“源文件”文件夹节点,在弹出的快捷菜单中选择“添加”中的“添加新文件”。

3)在弹出的“添加新文件”对话框中选择“asm 源文件”模板。

4)在“名称”中输入文件名称“func”。

5)点击“添加”按钮添加并自动打开文件func.asm。

6)将getcr3.asm文件中的源代码复制到func.asm文件中。

7)按F7生成修改后的EOS应用程序项目。

8)按F5启动调试。

9)应用程序执行的过程中,会将该进程的二级页表映射信息输出到虚拟机窗口和OS Lab“输出”窗口中,输出内容如图1。

10)将“输出”窗口中的内容复制到一个文本文件中。

图1

3.查看应用程序进程和系统进程并发时的页目录和页表

4. 查看应用程序进程并发时的页目录和页表

5. 在二级页表中映射新申请的物理页

图2

设计代码

PRIVATE

VOID

ConsoleCmdMemoryMap(

IN HANDLE StdHandle

)

{

BOOL IntState;

ULONG PfnOfPageDirectory;

ULONG PageTotal = 0;

ULONG IndexOfDirEntry;

ULONG IndexOfTableEntry;

PMMPTE_HARDWARE pPde;

PMMPTE_HARDWARE pPte;

ULONG_PTR PageTableBase;

ULONG_PTR VirtualBase;

const char* OutputFormat = NULL;

ASSERT(PspCurrentProcess == PspSystemProcess);

IntState = KeEnableInterrupts(FALSE);// 关中断

ULONG PfnArray[2];

MiAllocateZeroedPages(2, PfnArray);

OutputFormat = "New page frame number: 0x%X, 0x%X\n";

fprintf(StdHandle, 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)0xC0300000)[IndexOfDirEntry].Writable = 1;// 可写

MiFlushEntireTlb();// 刷新快表

PageTableBase = 0xC0000000 + IndexOfDirEntry * PAGE_SIZE;

IndexOfTableEntry = (0xE0000000 >> 12) & 0x3FF;((PMMPTE_HARDWARE)PageTableBase)[IndexOfTableEntry].P

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值