物理存储器与进程逻辑地址空间的管理实验报告Word文档格式.docx

上传人:b****1 文档编号:15324381 上传时间:2022-10-29 格式:DOCX 页数:14 大小:358.08KB
下载 相关 举报
物理存储器与进程逻辑地址空间的管理实验报告Word文档格式.docx_第1页
第1页 / 共14页
物理存储器与进程逻辑地址空间的管理实验报告Word文档格式.docx_第2页
第2页 / 共14页
物理存储器与进程逻辑地址空间的管理实验报告Word文档格式.docx_第3页
第3页 / 共14页
物理存储器与进程逻辑地址空间的管理实验报告Word文档格式.docx_第4页
第4页 / 共14页
物理存储器与进程逻辑地址空间的管理实验报告Word文档格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

物理存储器与进程逻辑地址空间的管理实验报告Word文档格式.docx

《物理存储器与进程逻辑地址空间的管理实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《物理存储器与进程逻辑地址空间的管理实验报告Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。

物理存储器与进程逻辑地址空间的管理实验报告Word文档格式.docx

学生所在学院

计算机科学与技术学院

指导教师

实验室名称地点

计算机基础第七实验室21B475

哈尔滨工程大学

一、实验概述

1.实验名称

2.实验目的

(1)通过查看物理存储器的使用情况,并练习分配和回收物理内存,从而掌握物理存储器的管理方法。

(2)通过查看进程逻辑地址空间的使用情况,并练习分配和回收虚拟内存,从而掌握进程逻辑地址空间的管理方法。

3.实验类型

验证+设计

4.实验内容

(1)、准备实验

(2)、执行控制台命令“pm”,查看物理存储器的信息

(3)、分配物理页和释放物理页:

a.在pm命令函数中添加分配物理页和释放物理页的代码

b.单步调试分配物理页和释放物理页

(4)、执行控制台命令“vm”,查看系统进程的虚拟地址描述符信息

执行控制台命令“vm”,查看当创建了一个应用程序进程后,系统进程和应用程序进程中虚拟地址描述符的信息

(5)、在系统进程中分配虚拟页和释放虚拟页

(6)、在应用程序进程中分配虚拟页和释放虚拟页

(7)、结束实验

二、实验环境

WindowsXP操作系统+OSlab试验平台

三、实验过程

1.设计思路和流程图

2.算法实现

3.需要解决的问题及解答

4.主要数据结构、实现代码及其说明

a.调用API函数VirtualAlloc,分配一个整型变量所需的空间,并使用一个整型变量的指针指向这个空间。

b.修改整型变量的值为0xFFFFFFFF。

在修改前输出整型变量的值,在修改后再输出整型变量的值。

c.调用API函数Sleep,等待10秒钟。

d.调用API函数VirtualFree,释放之前分配的整型变量的空间。

e.进入死循环,这样应用程序就不会结束。

5.源程序并附上注释

#include"

EOSApp.h"

intmain(intargc,char*argv[])

{

#ifdef_DEBUG

__asm("

int$3\nnop"

);

#endif

/*TODO:

在此处添加自己的代码*/

INT*d;

if(d=VirtualAlloc(0,sizeof(int),MEM_RESERVE|MEM_COMMIT))

{//调用API函数VirtualAlloc,分配一个整型变量所需的空间,并使用一个整型变量的指针指向这个空间。

printf("

Allocated%dbytesvirtualmemoryof0x%x\n\n"

sizeof(int),d);

virtualmemoryoriginalvalue:

0x%x\n\n"

*d);

//输出原始整型变量的值

*d=0xFFFFFFFF;

//修改整型变量的值为0xFFFFFFFF

virtualmemorynewvalue:

//输出修改后的整型变量的值

\nWaitfor10seconds\n"

Sleep(10000);

//调用API函数Sleep,等待10秒钟。

系统以毫秒为单位

if(VirtualFree(d,0,MEM_RELEASE))////调用API函数VirtualFree,释放之前分配的整型变量的空间

printf("

\nRealeasevirtualmemorysuccess!

\n"

else{

printf("

realeaseerror\n"

return-1;

}

\nEndlessloop!

"

for(;

;

){;

}//进入死循环,这样应用程序就不会结束

return0;

else

{

error\n"

return-1;

//若不能成功,打印error,并返回-1。

Helloworld!

}

6.程序运行时的初值和运行结果

a.控制台命令“pm”执行的结果

b.分配物理页和释放物理页

(1).使用OSLab打开本实验文件夹中的pm.c文件(将文件拖动到OSLab窗口中释放即可打开)。

此文件中有一个修改后的ConsoleCmdPhysicalMemory函数,主要是在原有代码的后面增加了分配物理页和释放物理页的代码。

(2).使用pm.c文件中ConsoleCmdPhysicalMemory函数的函数体替换ke/sysproc.c文件中ConsoleCmdPhysicalMemory函数的函数体。

(3).按F7生成修改后的EOSKernel项目。

(4).按F5启动调试。

(5).待EOS启动完毕,在EOS控制台中输入命令“pm”后按回车

尝试在调用MiAllocateAnyPages函数时分配多个物理页,然后在调用MiFreePages函数时将分配的多个物理页释放,并练习调试这两个函数在分配多个物理页和释放多个物理页时执行的过程。

我们把分配数量和释放数量设定为2:

c.执行控制台命令“vm”,查看系统进程的虚拟地址描述符信息:

d.执行控制台命令“vm”,查看当创建了一个应用程序进程后,系统进程和应用程序进程中虚拟地址描述符的信息:

使用pt命令查看有应用程序运行时进程和线程的信息。

创建了一个应用程序进程后,系统进程中虚拟地址描述符的信息。

使用“vm”命令查看应用程序进程虚拟地址描述符的结果。

分配虚拟页或者释放虚拟页后虚拟地址描述符及物理存储器的变化情况。

正在启动VirtualPC...

开始调试...

TotalVpnfrom655360to657407.(0xA0000000-0xA07FFFFF)

1#VadInclude1VpnFrom655360to655360.(0xA0000000-0xA0000FFF)

2#VadInclude2VpnFrom655361to655362.(0xA0001000-0xA0002FFF)

3#VadInclude2VpnFrom655365to655366.(0xA0005000-0xA0006FFF)

4#VadInclude2VpnFrom655367to655368.(0xA0007000-0xA0008FFF)

5#VadInclude2VpnFrom655369to655370.(0xA0009000-0xA000AFFF)

6#VadInclude2VpnFrom655371to655372.(0xA000B000-0xA000CFFF)

8#VadInclude2VpnFrom655375to655376.(0xA000F000-0xA0010FFF)

10#VadInclude2VpnFrom655379to655380.(0xA0013000-0xA0014FFF)

5#VadInclude2VpnFrom655367to655368.(0xA0007000-0xA0008FFF)

8#VadInclude2VpnFrom655373to655374.(0xA000D000-0xA000EFFF)

12#VadInclude2VpnFrom655381to655382.(0xA0015000-0xA0016FFF)

FreeVM'

sbaseaddress:

0xA0003000.Size:

0x2000.

 

7#VadInclude2VpnFrom655373to655374.(0xA000D000-0xA000EFFF)

9#VadInclude2VpnFrom655377to655378.(0xA0011000-0xA0012FFF)

11#VadInclude2VpnFrom655381to655382.(0xA0015000-0xA0016FFF)

ZeroedPhysicalPageCount:

0.

11#VadInclude2VpnFr

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1