实验三存储管理.docx
- 文档编号:11941216
- 上传时间:2023-06-03
- 格式:DOCX
- 页数:15
- 大小:28.98KB
实验三存储管理.docx
《实验三存储管理.docx》由会员分享,可在线阅读,更多相关《实验三存储管理.docx(15页珍藏版)》请在冰点文库上搜索。
实验三存储管理
IMBstandardizationoffice【IMB5AB-IMBK08-IMB2C】
实验三:
存储管理
一、实验名称
实验三:
存储管理
[1]WindowsServer2003内存结构
[2]WindowsServer2003虚拟内存
二、[1]实验目的
1)通过实验了解windowsServer2003内存的使用,学习如何在应用程序中管理内存、体会Windows应用程序内存的简单性和自我防护能力。
2)了解windowsServer2003的内存结构和虚拟内存的管理,进而了解进程堆和windows为使用内存而提供的一些扩展功能。
三、[1]实验内容
四、[1]实验步骤
Windows提供了一个API即GetSystemInfo(),以便用户能检查系统中虚拟内存的一些特性。
程序5-1显示了如何调用该函数以及显示系统中当前内存的参数。
步骤1:
登录进入WindowsServer2003。
步骤2:
在“开始”菜单中单击“程序”-“MicrosoftVisualStudio6.0”–“MicrosoftVisualC++6.0”命令,进入VisualC++窗口。
步骤3:
在工具栏单击“打开”按钮,在“打开”对话框中找到并打开实验源程序。
程序5-1:
获取有关系统的内存设置的信息
步骤4:
单击“Build”菜单中的“Compile”命令,并单击“是”按钮确认。
系统对进行编译。
步骤5:
编译完成后,单击“Build”菜单中的“Build”命令,建立可执行文件。
操作能否正常进行如果不行,则可能的原因是什么
答:
操作能正常进行。
_____________________________________________________
步骤6:
在工具栏单击“ExecuteProgram”(执行程序)按钮,执行程序。
运行结果(分行书写。
如果运行不成功,则可能的原因是什么?
):
1)虚拟内存每页容量为:
2)最小应用地址:
0x00010000
3)最大应用地址为:
0x7ffeffff
4)当前可供应用程序使用的内存空间为:
5)当前计算机的实际内存大小为:
阅读和分析程序5-1,请回答问题:
1)理论上每个windows应用程序可以独占的最大存储空间是:
____4GB____
2)在程序5-1中,用于检索系统中虚拟内存特性的API函数是:
DWORD
提示:
可供应用程序使用的内存空间实际上已经减去了开头与结尾两个64KB的保护区。
虚拟内存空间中的64KB保护区是防止编程错误的一种Windows方式。
任何对内存中这一区域的访问(读、写、执行)都将引发一个错误陷井,从而导致错误并终止程序的执行。
也就是说,假如用户有一个NULL指针(地址为0),但仍试图在此之前很近的地址处使用另一个指针,这将因为试图从更低的保留区域读写数据,从而产生意外错误并终止程序的执行。
五、[1]实验结论
通过本次实验我了解windowsServer2003内存的使用,同时学习了如何在应用程序中管理内存。
在实验的过程中,体会到了Windows应用程序内存的简单性和自我防护能力。
对于Windowssever2003的内存结构有了一定的了解。
二、[2]实验目的
1)通过实验了解WindowsServer2003内存的使用,学习如何在应用程序中管理内存,体会Windows应用程序内存的简单性和自我防护能力。
2)学习检查虚拟内存空间或对其进行操作。
3)了解WindowsServer2003的内存结构和虚拟内存的管理,进而了解进程堆和Windows为使用内存而提供的一些扩展功能。
三、[2]实验内容与实验步骤
1.虚拟内存的检测
清单5-2所示的程序使用VirtualQueryEX()函数来检查虚拟内存空间。
步骤1:
登录进入WindowsServer2003。
步骤2:
在“开始”菜单中单击“程序”-“MicrosoftVisualStudio6.0”–“MicrosoftVisualC++6.0”命令,进入VisualC++窗口。
步骤3:
在工具栏单击“打开”按钮,在“打开”对话框中找到并打开实验源程序。
清单5-2检测进程的虚拟地址空间
清单5-2中显示一个walkVM()函数开始于某个进程可访问的最低端虚拟地址处,并在其中显示各块虚拟内存的特性。
虚拟内存中的块由VirsualQueryEX()API定义成连续快或具有相同状态(自由区,已调配区等)的内存,并分配以一组统一的保护标志(只读、可执行等)。
步骤4:
单击“Build”菜单中的“Compile”命令,并单击“是”按钮确认。
系统对进行编译。
步骤5:
编译完成后,单击“Build”菜单中的“Build”命令,建立可执行文件。
操作能否正常进行如果不行,则可能的原因是什么
答:
操作能正常运行。
___________________________________________________
步骤6:
在工具栏单击“ExecuteProgram”(执行程序)按钮,执行程序。
1)分析运行结果(如果运行不成功,则可能的原因是什么)
按committed,reserved,free等三种虚拟地址空间分别记录实验数据,其中“描述”是对该组数据的简单描述,例如,对下列一组数据:
可描述为:
具有READWRITE权限的已调配私有内存区。
将系统当前的自由区(Free)虚拟地址空间填入表3-3中。
表3-3实验记录
地址
大小
虚拟空间类型
访问权限
描述
free
NOACCESS
没有任何权限的已调配的共有内存区
KB
free
NOACCESS
没有任何权限的已调配的共有内存区
KB
free
NOACCESS
没有任何权限的已调配的共有内存区
KB
free
NOACCESS
没有任何权限的已调配的共有内存区
002b-002c
KB
free
NOACCESS
没有任何权限的已调配的共有内存区
KB
free
NOACCESS
没有任何权限的已调配的共有内存区
KB
free
NOACCESS
没有任何权限的已调配的共有内存区
将系统当前的已调配区(Committed)虚拟地址空间填入表3-4中。
表3-4实验记录
地址
大小
虚拟空间类型
访问权限
描述
Committed
Private
只有具有READWRITE权限的已调配私有内存区
KB
Committed
Private
只有具有READWRITE权限的已调配私有内存区
0012c000-0012d000
KB
Committed
Private
具有GUARD,READEWRITE权限的已调配私有内存区
KB
Committed
Private
只有具有READWRITE权限的已调配私有内存区
KB
Committed
Mapped
只有具有READONLY权限的已调配映射内存区
KB
Committed
Private
只有具有READWRITE权限的已调配私有内存区
KB
Committed
Mapped
只有具有READWRITE权限的已调配映射内存区
将系统当前的保留区(Reserved)虚拟地址空间填入表3-5中。
表3-5实验记录
地址
大小
虚拟空间类型
访问权限
描述
000-0012c
MB
Reserved
Private
只有具有READONLY权限的已调配私有内存区
996KB
Reserved
Private
只有具有READONLY权限的已调配私有内存区
KB
Reserved
Mapped
只有具有READONLY权限的已调配映射内存区
KB
Reserved
Private
只有具有READONLY权限的已调配私有内存区
00-003a00
KB
Reserved
Private
只有具有READONLY权限的已调配私有内存区
003c5000-003d0000
KB
Reserved
Private
只有具有READONLY权限的已调配私有内存区
003d6000-003e0000
KB
Reserved
Private
只有具有READONLY权限的已调配私有内存区
2)从上述输出结果,对照分析清单5-2的程序,请简单描述程序运行的流程:
答:
该程序从主函数Main()出发,调用voidWalkVM(HANDLEhProcess)函数,voidWalkVM(HANDLEhProcess)函数获得系统信息,分配应用程序内存地址空间。
然后开始做循环,从函数运行开始每次获得下一个虚拟程序内存块的信息,之后计算块的结尾及大小,然后再显示块的大小与位置,状态,显示保护方式(voidShowProtection(DWORDdwTarget)),将文件名显示出来,移动块指针获得下一块,依次这样循环下去,直至结束。
2.虚拟内存的分配与释放
能正确使用系统函数GetMeoryStatus()和数据结构MEMORY_STATUS了解系统内存和虚拟存储空间使用情况,会使用VirsualAlloc()函数和VirsualFree()函数分配和释放虚拟内存空间。
步骤1:
在VC环境下选择Win32ConsoleApplication建立一个控制台工程文件,选择AnapplicationthatSupportsMFC。
步骤2:
编辑并编译完成后,单击“Build”菜单中的“Build”命令,建立可执行文件。
操作能否正常进行如果不行,则可能的原因是什么
答:
操作能正常进行。
______________________________________________________
步骤3:
在工具栏单击“ExecuteProgram”按钮,执行程序。
分析程序的运行结果
1)请描述运行结果(如果运行不成功,则可能的原因是什么?
):
答:
运行结果如下:
CurrentMemoryStatusis:
TotalPhysicalMemoryis2047MB
AvailablePhysicalMemoryis2047MB
TotalPageFileis4095MB
AvailablePageFileis4095MB
TotalVirtualMemoryis2047MB
AvailableVirsualmemoryis2031MB
MemoryLoadis22%
NowAllocate32MVirsualMemoryand2MPhysicalMemory
CurrentMemoryStatusis:
TotalPhysicalMemoryis2047MB
AvailablePhysicalMemoryis2047MB
TotalPageFileis4095MB
AvailablePageFileis4095MB
TotalVirtualMemoryis2047MB
AvailableVirsualmemoryis1997MB
MemoryLoadis22%
NowRelease32MVirsualMemoryand2MPhysicalMemory
CurrentMemoryStatusis:
TotalPhysicalMemoryis2047MB
AvailablePhysicalMemoryis2047MB
TotalPageFileis4095MB
AvailablePageFileis4095MB
TotalVirtualMemoryis2047MB
AvailableVirsualmemoryis2031MB
MemoryLoadis22%
Pressanykeytocontinue
2)根据运行输出结果,若要改变分配和回收的虚拟内存和物理内存的大小,要改变程序代码的语句,分别为:
答:
要改变的分配虚拟内存的程序代码语句为:
if(BaseAddr==NULL)printf("VirsualAllocateFail.\n");
str=(char*)malloc(1024*1024*2);
GetMemSta();
要改变的回收虚拟内存的程序代码语句为:
if(:
:
VirtualFree(BaseAddr,0,MEM_RELEASE)==0)
printf("ReleaseAllocateFail.\n");
free(str);
3)根据运行输出结果,对照分析5-2程序,可以看出程序运行的流程吗?
请简单描述:
答:
程序开始运行,分配虚拟内存为32M,物理内存为2M,后进行虚拟内存释放,释放了32M虚拟内存,2M物理内存。
四、[2]实验结论
通过本次实验了解windowsServer2003的内存结构和虚拟内存的管理,较为清楚的理解了在windowssever2003中虚拟内存的检测以及其内存分配和内存释放的运行过程。
进而了解进程堆和windows为使用内存而提供的一些扩展功能。
在程序运行的过程中,首先会检测到需要使用的虚拟内存,其次通过调用函数去分配当前部分所需要的虚拟内存大小,之后进行虚拟内存的分配,最后,运行结束,释放虚拟内存。
在这整个过程中,能够节约内存的使用,增加了处理事务的效率。
附录:
运行结果
000-0012cMB)Reserved,READONLY,Private
0012c000-0012d000KB)Committed,GUARD,READWRITE,Private
00270000-002b1000(260KB)Committed,READONLY,Mapped
002b-002cKB)Free,NOACCESS
00398000-003a0000KB)Reserved,READONLY,Private
003a0000-003a1000KB)Committed,READWRITE,Private
003a1000-003b0000KB)Free,NOACCESS
003b0000-003b1000KB)Committed,READWRITE,Private
003b1000-003c0000KB)Free,NOACCESS
003c0000-003c5000KB)Committed,READWRITE,Private
003c5000-003d0000KB)Reserved,READONLY,Private
003d0000-003d6000KB)Committed,READWRITE,Private
003d6000-003e0000KB)Reserved,READONLY,Private
00401000-0046d000(432KB)Committed,EXECUTE_READ,Image
00475000-0047c000KB)Committed,READWRITE,Image
00660000-006e1000(516KB)Committed,EXECUTE_READ,Mapped
00968000-00a60000(992KB)Reserved,READONLY,Private
00a60000-74ae0000GB)Free,NOACCESS
74ae0000-74ae1000KB)Committed,READONLY,Image,Module:
74ae1000-74b25000(272KB)Committed,EXECUTE_READ,Image
74b25000-74b28000KB)Committed,WRITECOPY,Image
74b28000-74b2a000KB)Committed,READWRITE,Image
74b2a000-74b2e000KB)Committed,WRITECOPY,Image
74b2e000-74b2f000KB)Committed,READWRITE,Image
74b2f000-74b45000KB)Committed,READONLY,Image
7619d000-76eb0000MB)Free,NOACCESS
76eb0000-76eb1000KB)Committed,READONLY,Image,Module:
76eb1000-76ec0000KB)Committed,EXECUTE_READ,Image
76ec0000-76ec1000KB)Committed,READWRITE,Image
76ec1000-76ec3000KB)Committed,READONLY,Image
76ec3000-77b70000MB)Free,NOACCESS
77b70000-77b71000KB)Committed,READONLY,Image,Module:
77b71000-77bbf000(312KB)Committed,EXECUTE_READ,Image
77bbf000-77bc1000KB)Committed,WRITECOPY,Image
77bc1000-77bc2000KB)Committed,READWRITE,Image
77bc2000-77bc3000KB)Committed,WRITECOPY,Image
77bc3000-77bc6000KB)Committed,READWRITE,Image
77bc6000-77bca000KB)Committed,READONLY,Image
77bca000-77bd0000KB)Free,NOACCESS
77bd0000-77bd1000KB)Committed,READONLY,Image,Module:
77bd1000-77c14000(268KB)Committed,EXECUTE_READ,Image
77c14000-77c16000KB)Committed,READWRITE,Image
77c16000-77c19000KB)Committed,READONLY,Image
77c19000-77c20000KB)Free,NOACCESS
77c20000-77c21000KB)Committed,READONLY,Image,Module:
77c21000-77cba000(612KB)Committed,EXECUTE_READ,Image
77cba000-77cbb000KB)Committed,READWRITE,Image
77cbb000-77cc1000KB)Committed,READONLY,Image
77cc1000-77e10000MB)Free,NOACCESS
77e10000-77e11000KB)Committed,READONLY,Image,Module:
77e11000-77e71000(384KB)Committed,EXECUTE_READ,Image
77e71000-77e72000KB)Committed,READWRITE,Image
77e72000-77e73000KB)Committed,WRITECOPY,Image
77e73000-77ea0000(180KB)Committed,READONLY,Image
77ea0000-77eb0000KB)Free,NOACCESS
77eb0000-77eb1000KB)Committed,READONLY,Image,Module:
77eb1000-77efb000(296KB)Committed,EXECUTE_READ,Image
77efb000-77efc000KB)Committed,READWRITE,Image
77efc000-77efd000KB)Committed,WRITECOPY,Image
77efd000-77f02000KB)Committed,READONLY,Image
77f02000-77f30000(184KB)Free,NOACCESS
77f30000-77f31000KB)Committed,READONLY,Image,Module:
77f31000-77fa1000(448KB)Committed,EXECUTE_READ,Image
77fa1000-77fa3000KB)Committed,READWRITE,Image
77fa3000-77fa5000KB)Committed,WRITECOPY,Image
77fa5000-77fdc000(220KB)Committed,READONLY,Image
77fdc000-7c800000MB)Free,NOACCESS
7c800000-7c801000KB)Committed,READONLY,Image,Module:
7c801000-7c88b000(552KB)Committed,EXECUTE_READ,Image
7c88b000-7c88e000KB)Committed,READWRITE,Image
7c88e000-7c890000KB)Committed,WRITECOPY,Image
7c890000-7c92b000(620KB)Committed,READONLY,Image
7c92b000-7c930000KB)Free,NOACCESS
7c930000-7c931000KB)Committed,READONLY,Image,Module:
7c931000-7c9ba000(548KB)Committed,EXECUTE_READ,Image
7c9ba000-7c9bd000KB)Committed,READWRITE,Image
7c9bd000-7c9be000KB)Committed,WRITECOPY,Image
7c9be000-7c9bf000
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 存储 管理
![提示](https://static.bingdoc.com/images/bang_tan.gif)