Windows操作系统实验六实验报告.docx

上传人:b****4 文档编号:5283081 上传时间:2023-05-08 格式:DOCX 页数:11 大小:178.30KB
下载 相关 举报
Windows操作系统实验六实验报告.docx_第1页
第1页 / 共11页
Windows操作系统实验六实验报告.docx_第2页
第2页 / 共11页
Windows操作系统实验六实验报告.docx_第3页
第3页 / 共11页
Windows操作系统实验六实验报告.docx_第4页
第4页 / 共11页
Windows操作系统实验六实验报告.docx_第5页
第5页 / 共11页
Windows操作系统实验六实验报告.docx_第6页
第6页 / 共11页
Windows操作系统实验六实验报告.docx_第7页
第7页 / 共11页
Windows操作系统实验六实验报告.docx_第8页
第8页 / 共11页
Windows操作系统实验六实验报告.docx_第9页
第9页 / 共11页
Windows操作系统实验六实验报告.docx_第10页
第10页 / 共11页
Windows操作系统实验六实验报告.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Windows操作系统实验六实验报告.docx

《Windows操作系统实验六实验报告.docx》由会员分享,可在线阅读,更多相关《Windows操作系统实验六实验报告.docx(11页珍藏版)》请在冰点文库上搜索。

Windows操作系统实验六实验报告.docx

Windows操作系统实验六实验报告

 

Windows操作系统

C/C++程序实验

 

姓名:

______________

学号:

_________

班级:

_________________

院系:

_____信息工程学院_____

 

______________年_____月_____日

 

实验六Windows2000/xp虚拟内存

一、背景知识

二、实验目的

三、工具/准备工作

四、实验内容与步骤

1.虚拟内存的检测

清单6-1所示程序使用VirtualQueryEX()函数来检查虚拟内存空间。

步骤1:

登录进入Windows2000/xpProfessional。

步骤2:

在“开始”菜单中单击“程序-MicrosoftVisualStudio6.0–MicrosoftVisualC++6.0”命令,进入VisualC++窗口。

步骤3:

在工具栏单击“打开”按钮,在“打开”对话框中找到并打开实验源程序6-1.cpp。

步骤4:

单击“Build”菜单中的“Compile6-1.cpp”命令,并单击“是”按钮确认。

系统对6-1.cpp进行编译。

步骤5:

编译完成后,单击“Build”菜单中的“Build6-1.exe”命令,建立6-1.exe可执行文件。

操作能否正常进行?

如果不行,则可能的原因是什么?

_

__

_________________________________________________________________

________________________________________________________________________

步骤6:

在工具栏单击“ExecuteProgram”按钮,执行6-1.exe程序。

1)分析运行结果(如果运行不成功,则可能的原因是什么?

)。

按committed、reserved、free等三种虚拟地址空间分别记录实验数据。

其中“描述”是指对该组数据的简单描述,例如,对下列一组数据:

–/xp<8.00KB>Committed,READWRITE,Private

可描述为:

具有READWRITE权限的已调配私有内存区。

将系统当前的自由区(free)虚拟地址空间填入表6-3中。

表6-3实验记录

地址

大小

虚拟地址

空间类型

访问权限

描述

 -

 8.00KB

free

 READWRITE

 具有READWRITE权限的已调配私有内存区

 -

56.0KB

free

NOACCESS

 没有任何权限的已调配的共有内存区

 -

 4.00KB

free

 READWRITE

 具有READWRITE权限的已调配私有内存区

 -

 60.0KB

free

NOACCESS

 没有任何权限的已调配的共有内存区

 -0012c000

 0.98MB

free

  READONLY

  只具有READ权限的已调配私有内存区

 0012c000-0012d000

 4.00KB

free

  READWRITE

  具有READWRITE权限的已调配私有内存区

 0012d000-

 12.0KB

free

 READWRITE

 具有READWRITE权限的已调配私有内存区

 -

 12.0KB

free

 READONLY

   只具有READ权限的已调配内存区

 

提示:

详细记录实验数据在实验活动中是必要的,但想想是否可以简化记录的办法?

将系统当前的已调配区(committed)虚拟地址空间填入表6-4中。

表6-4实验记录

地址

大小

虚拟地址

空间类型

访问权限

描述

-(64.0KB)Committed,READWRITE,Mapped

-(64.0KB)Committed,READWRITE,Mapped

0012d000-0012e000(4.00KB)Committed,GUARD,READWRITE,Private

0012e000-(8.00KB)Committed,READWRITE,Private

-(16.0KB)Committed,READONLY,Mapped

-001a7000(412KB)Committed,READONLY,Mapped

001b0000-001b1000(4.00KB)Committed,READWRITE,Private

001c0000-001c1000(4.00KB)Committed,READWRITE,Private

001d0000-001d7000(28.0KB)Committed,READONLY,Mapped

001e0000-001e2000(8.00KB)Committed,READWRITE,Mapped

 

将系统当前的保留区(reserved)虚拟地址空间填入表6-5中。

 

表6-5实验记录

地址

大小

虚拟地址

空间类型

访问权限

描述

0022d000-(844KB)Reserved,READONLY,Private

-003c0000(744KB)Reserved,READONLY,Mapped

003c3000-003c8000(20.0KB)Reserved,READONLY,Mapped

-(52.0KB)Reserved,READONLY,Private

006f4000-(11.5MB)Reserved,READONLY,Mapped

-(992KB)Reserved,READONLY,Private

-(40.0KB)Reserved,READONLY,Private

2)从上述输出结果,对照分析5-2程序,请简单描述程序运行的流程:

____________________________________________________________________

________________________________________________________________________

________________________________________________________________________

________________________________________________________________________

2.虚拟内存操作

清单6-2的示例显示了如何分配一个大容量空间,将物理存储委托给其中的很小一部分(千分之一)并加以使用。

步骤7:

在VisualC++窗口的工具栏中单击“打开”按钮,在“打开”对话框中找到并打开实验源程序6-2.cpp。

步骤8:

单击“Build”菜单中的“Compile6-2.cpp”命令,并单击“是”按钮确认。

系统对6-2.cpp进行编译。

步骤9:

编译完成后,单击“Build”菜单中的“Build6-2.exe”命令,建立6-2.exe可执行文件。

操作能否正常进行?

如果不行,则可能的原因是什么?

_

___________________________________________________________________

________________________________________________________________________

步骤10:

在工具栏单击“ExecuteProgram”按钮,执行6-2.exe程序。

运行结果(如果运行不成功,则可能的原因是什么?

):

1)__标点____________________________________________________

2)__________________________________________________________________

3)__________________________________________________________________

对照运行结果,分析程序6-2。

为了给数据库保留1GB的段地址空间,清单6-2给出了内存分配的四种方法。

·第一种技术

即程序中说明为__LPVOIDpBlock=:

:

malloc(c_dwGigabyte);

:

:

FillZero(pBlock,c_dwMegabyte);

:

:

free(pBlock);_____

的程序段,该段程序试图利用标准C中的malloc()函数,从已经已调配的小内存区获得内存。

从运行结果看,这种技术成功了吗?

_____成功________________。

·第二种技术

即程序中说明为_LPVOIDpBlock=:

:

VirtualAlloc(

NULL,//不指定起始地址

c_dwGigabyte,//要求1GB

MEM_COMMIT,//调配物理存储

PAGE_READWRITE);//对此的读写操作

:

:

FillZero(pBlock,c_dwMegabyte);

:

:

VirtualFree(pBlock,0,MEM_RELEASE);

的程序段,该段程序试图通过VirtualAlloc(),然后利用物理备用内存将整个块分配到虚拟内存空间的任何位置。

这种技术只对拥有1GB以上的RAM且都有换页文件的计算机可行。

从运行结果看,这种技术成功了吗?

______成功_______________。

·第三种技术

即程序中说明为LPVOIDpBlock=:

:

VirtualAlloc(

NULL,//不指定起始地址

c_dwGigabyte,//

MEM_RESERVE,//不调配物理存储

PAGE_READWRITE);//对此的读写操作

:

:

FillZero(pBlock,c_dwMegabyte);

:

:

VirtualFree(pBlock,0,MEM_RELEASE);

}

要求1GB的程序段,该段程序利用VirtualAlloc(),如果函数成功,则获得大块内存,但不将任何物理内存调配到此块中。

从运行结果看,这种技术成功了吗?

_____不成功____。

·第四种技术

即程序中说明为LPVOIDpBlock=:

:

VirtualAlloc(

NULL,//不指定起始地址

c_dwGigabyte,//要求1GB

MEM_RESERVE,//不调配物理存储

PAGE_READWRITE);//对此的读写操作

:

:

VirtualAlloc(

pBlock,

c_dwMegabyte,

MEM_COMMIT,

PAGE_READWRITE);

:

:

FillZero(pBlock,c_dwMegabyte);

:

:

VirtualFree(pBlock,0,MEM_RELEASE);

的程序段,该段程序保留1GB的内存区,然后将物理内存调配给其中的很小一部分(1MB)。

这就是清单6-2介绍的处理一个假想的数据库应用程序的方法:

保留整个块,然后按要求在其一小部分内进行读操作,让系统将用过的区域换页到磁盘中。

利用VirtualLock()API,Windows可用来在自己的进程空间中控制虚拟内存的行为。

这个函数与其成对的VirtualUnlock()阻止或允许一块内存从物理RAM中换页和换页到页面文件中。

这样就会通知系统有一段特定的内存区要求对用户作出强烈的响应,所以系统不应将其移出RAM。

当然,如果要将整个虚拟内存空间锁定,系统就会停留于试图将系统中工作内存的每一小块换页到磁盘。

 

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2