下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验名称实验三:存储管理1Windows Server 2003内存结构2 Windows Server 2003 虚拟内存二、1实验目的1)通过实3了解 windows Server 2003内存的使用,学习如何在应用程序中管理内存、 体会Windows应用程序内存的简单性和自我防护能力。2) 了解 windows Server 2003的内存结构和虚拟内存的管理,进而了解进程堆和windows为使用内存而提供的一些扩展功能。三、 1实验内容1 .使用任务管理器终止进程2 .显示其他进程计数器3 .更改正在运行的程序的优先级四、1实验步骤Windows提供了一个API即GetSystemIn
2、fo(),以便用户能检查系统中虚拟内存的一些特性。程序5-1显示了如何调用该函数以及显示系统中当前内存的参数。步骤 1:登录进入 Windows Server 2003。步骤 2:在"开始”菜单中单击"程序"-"Microsoft Visual Studio 6.0" - "MicrosoftVisual C+ 6.0 ” 命令,进入 Visual C+ 窗口。步骤3:在工具栏单击“打开”按钮,在“打开”对话框中找到并打开实验源程序5-1.cpp 。程序5-1 :获取有关系统的内存设置的信息步骤4:单击“ Build ”菜单中的“ C
3、ompile 5-1.cpp ”命令,并单击“是”按钮确认。系统对4-1.cpp进行编译。步骤5:编译完成后,单击“ Build ”菜单中的“ Build 5-1.exe”命令,建立 5-1.exe可执行文件。操作能否正常进行?如果不行,则可能的原因是什么?答:操作能正常进行。步骤6:在工具栏单击“Execute Program ”(执行程序)按钮,执行5-1.exe程序。运行结果(分行书写。如果运行不成功,则可能的原因是什么?):1)虚拟内存每页容量为:4.00KB2)最小应用地址:0x000100003)最大应用地址为:0x7ffeffff4)当前可供应用程序使用的内存空间为:3.92GB
4、5)当前计算机的实际内存大小为:1.99GB阅读和分析程序5-1,请回答问题:1)理论上每个windows应用程序可以独占的最大存储空间是: 4GB2)在程序5-1中,用于检索系统中虚拟内存特性的API函数是:DWORD提示:可供应用程序使用的内存空间实际上已经减去了开头与结尾两个64KB的保护区。虚拟内存空间中的64KB保护区是防止编程错误的一种Windows方式。任何对内存中这一区域的访问(读、写、执行)都将引发一个错误陷井,从而导致错误并终止程序的执行。也就是说,假如用户有一个 NULL指针(地址为0),但仍试图在此之前很近的地址处使用另一个 指针,这将因为试图从更低的保留区域读写数据,
5、从而产生意外错误并终止程序的执行。1实验结论通过本次实验我了解 windows Server 2003内存的使用,同时学习了如何在应用程 序中管理内存。在实验的过程中,体会到了 Windows应用程序内存的简单性和自我防护 能力。对于 Windows sever 2003 的内存结构有了一定的了解。二、2实验目的1)通过实验了解 Windows Server 2003内存的使用,学习如何在应用程序中管理内存, 体会Windows应用程序内存的简单性和自我防护能力。2)学习检查虚拟内存空间或对其进行操作。3) 了解 Windows Server 2003 的内存结构和虚拟内存的管理,进而了解进程
6、堆和 Windows为使用内存而提供的一些扩展功能。三、2实验内容与实验步骤1.虚拟内存的检测清单5-2所示的程序使用 VirtualQueryEX()函数来检查虚拟内存空间。步骤 1:登录进入 Windows Server 2003 。步骤 2:在"开始”菜单中单击"程序"-"Microsoft Visual Studio 6.0" - "Microsoft Visual C+ 6.0 ” 命令,进入 Visual C+ 窗口。步骤3:在工具栏单击“打开”按钮,在“打开”对话框中找到并打开实验源程序5-2.cpp 。清单5-2 检测
7、进程的虚拟地址空间清单5-2中显示一个 walkVM()函数开始于某个进程可访问的最低端虚拟地址处,并在 其中显示各块虚拟内存的特性。虚拟内存中的块由 VirsualQueryEX()API定义成连续快或具有相同状态(自由区,已调配区等)的内存,并分配以一组统一的保护标志(只读、可执行 等)。步骤4:单击“ Build ”菜单中的“ Compile 52cpp ”命令,并单击“是”按钮确认。 系统对5-2.cpp进行编译。步骤5:编译完成后,单击“ Build ”菜单中的“ Build 5-2.exe”命令,建立 5-2.exe可执行文件。操作能否正常进行?如果不行,则可能的原因是什么?答:操
8、作能正常运行。步骤6:在工具栏单击“Execute Program "(执行程序)按钮,执行5-2.exe程序。1)分析运行结果(如果运行不成功,则可能的原因是什么)按committed,reserved,free等三种虚拟地址空间分别记录实验数据,其中“描述”是对该组数据的简单描述,例如,对下列一组数据:00010000-00012000<8.00KB>Committed,READWRITE,Private 可描述为:具有 READWRITE 权限的已调配私有内存区。将系统当前的自由区(Free)虚拟地址空间填入表3-3中。表3-3实验记录地址大小虚拟空间类型访问权限描
9、述00012000-0002000056.0KBfreeNOACCESS没有任何权限的已 调配的共有内存区00021000-0003000060.0 KBfreeNOACCESS没有任何权限的已 调配的共有内存区00135000-0014000044.0 KBfreeNOACCESS没有任何权限的已 调配的共有内存区00266000-0027000040.0 KBfreeNOACCESS没有任何权限的已 调配的共有内存区002b100060.0 KBfreeNOACCESS没有任何权限的已-002C0000调配的共有内存区00301000-0031000060.0 KBfreeNOACCESS
10、没有任何权限的已 调配的共有内存区00316000-0032000040.0 KBfreeNOACCESS没有任何权限的已 调配的共有内存区将系统当前的已调配区(Committed)虚拟地址空间填入表3-4匚表3-4实验记录地址大小虚拟空间类型访问权限描述00010000-000120008.00KBCommittedPrivate只有具有READWRIT取限的 已调配私有内存区00020000-000210004.00 KBCommittedPrivate只有具有READWRIT取限的 已调配私有内存区0012C000-0012d0004.00 KBCommittedPrivate具有GUA
11、RD,READEWRITE权限的已调配私有 内存区0012d000-0013000012.0 KBCommittedPrivate只有具有READWRIT取限的 已调配私有内存区00130000-0013500020.0 KBCommittedMapped只有具有 READONL微限的 已调配映射内存区00140000-0014700028.0 KBCommittedPrivate只有具有READWRIT取限的 已调配私有内存区00240000-0024300012.0 KBCommittedMapped只有具有READWRIT取限的 已调配映射内存区将系统当前的保留区(Reserved)虚拟
12、地址空间填入表3-5中。表3-5实验记录地址大小虚拟空间类型访问权限描述00030000-0012C0000.98 MBReservedPrivate只有具有READONLY 限的 已调配私有内存区00147000-00240000996 KBReservedPrivate只有具有READONLY 限的 已调配私有内存区00243000-0025000052.0 KBReservedMapped只有具有READONLY 限的 已调配映射内存区00373000-0038000052.0 KBReservedPrivate只有具有READONLY 限的已调配私有内存区00398000-003a00
13、0032.0 KBReservedPrivate只有具有READONLY 限的 已调配私有内存区003c5000-003d000044.0 KBReservedPrivate只有具有READONLY 限的 已调配私有内存区003d6000-003e000040.0 KBReservedPrivate只有具有READONLY 限的 已调配私有内存区2)从上述输出结果,对照分析清单5-2的程序,请简单描述程序运行的流程:答:该程序从主函数 Main()出发,调用 void WalkVM(HANDLE hProcess) 函数,void WalkVM(HANDLE hProcess)函数获得系统信息
14、,分配应用程序内存地址空间。然后开始做循 环,从函数运行开始每次获得下一个虚拟程序内存块的信息,之后计算块的结尾及大小,然后再显示块的大小与位置,状态,显示保护方式(void ShowProtection(DWORD dwTarget),将文件名显示出来,移动块指针获得下一块,依次这样循环下去,直至结束。2.虚拟内存的分配与释放能正确使用系统函数 GetMeoryStatus()和数据结构 MEMORY_STATUSff系统内存和虚 拟存储空间使用情况,会使用 VirsualAlloc ()函数和 VirsualFree ()函数分配和释放虚 拟内存空间。步骤1:在VC6.0环境下选择 Win
15、32 Console Application 建立一个控制台工程文件, 选择 An application that Supports MFC 。步骤2:编辑并编译完成后,单击“ Build "菜单中的"Build GetMemoryStatus.exe " 命令,建立GetMemoryStatus.exe 可执行文件。操作能否正常进行?如果不行,则可能的原因是什么?答:操作能正常进行。步骤 3:在工具栏单击"Execute Program ”按钮,执行 GetMemoryStatus.cpp.exe 程分析程序GetMemoryStatus.cpp 的
16、运行结果1)请描述运行结果(如果运行不成功,则可能的原因是什么?):答:运行结果如下:Current Memory Status is :Total Physical Memory is 2047 MBAvailable Physical Memory is 2047 MBTotal Page File is 4095 MBAvailable Page File is 4095 MBTotal Virtual Memory is 2047 MBAvailable Virsual memory is 2031 MBMemory Load is 22 %Now Allocate 32M Virsu
17、al Memory and 2M Physical MemoryCurrent Memory Status is :Total Physical Memory is 2047 MBAvailable Physical Memory is 2047 MBTotal Page File is 4095 MBAvailable Page File is 4095 MBTotal Virtual Memory is 2047 MBAvailable Virsual memory is 1997 MBMemory Load is 22 %Now Release 32M Virsual Memory an
18、d 2M Physical MemoryCurrent Memory Status is :Total Physical Memory is 2047 MBAvailable Physical Memory is 2047 MBTotal Page File is 4095 MBAvailable Page File is 4095 MBTotal Virtual Memory is 2047 MBAvailable Virsual memory is 2031 MBMemory Load is 22 %Press any key to continue2) 根据运行输出结果,若要改变分配和回
19、收的虚拟内存和物理内存的大小,要改变程序代码的语句,分别为:答:要改变的分配虚拟内存的程序代码语句为:if (BaseAddr=NULL) printf("Virsual Allocate Fail.n");str=(char *)malloc(1024*1024*2);GetMemSta();要改变的回收虚拟内存的程序代码语句为:if (:VirtualFree(BaseAddr,0,MEM_RELEASE)=0) printf("Release Allocate Fail.n");free(str);3) 根据运行输出结果, 对照分析 5-2 程序,
20、 可以看出程序运行的流程吗?请简单描述:答:程序开始运行,分配虚拟内存为32M,物理内存为2M,后进行虚拟内存释放,释放了 32M虚拟内存,2M物理内存。ca *C: Progra« FilesMicrosoft Visual StudioiyProjectsvindBebugviiid. exeCurrent Memory Status is :Total Physical Menory is 2047 MBAvailable Physical Menory is 2047 MBTotal Page File is 4095 MBAvailable Page File is 409
21、5 MBTotal Uirtual Memory is 204? MB Available Uirsual nenory is 2031 MB Memory Load is 22 ZNow Allocate 32M Uirsual Menory and 2M Physical MemoryCurrent Memory Status is :Total Physical Menory is 2047 MBAvailable Physical Menory is 2047 MBTotal Page File is 4095 MBAvailable Page File is 4095 MBTotal
22、 Uirtual Memory is 2047 MD Available Uirsual nenory is 1997 MB Memory Load is 22 ZNow Release 32M Uirsual Menory and 2M Physical MemoryCurrent Memory Status is :Total Physical Menory is 2047 MBAvailable Physical Menory is 2047 MBTotal Page File is 4095 MBAvailable Page File is 4095 MBTotal Uirtual M
23、emory is 204? MB Available Uirsual nenory is 2031 MB Memory Load is 22 ZPress any key to continue00310000-00316000 (24.0 KB) Committed, READONLY, Mapped、 2 实验结论通过本次实验了解windows Server 2003 的内存结构和虚拟内存的管理,较为清楚的理解了在windows sever 2003 中虚拟内存的检测以及其内存分配和内存释放的运行过程。进而了解进程堆和windows 为使用内存而提供的一些扩展功能。在程序运行的过程中,首先
24、会检测到需要使用的虚拟内存,其次通过调用函数去分配当前部分所需要的虚拟内存大小, 之后进行虚拟内存的分配,最后,运行结束,释放虚拟内存。在这整个过程中,能够节约内存的使用,增加了处理事务的效率。附录:5-2.cpp 运行结果00010000-00012000 (8.00 KB) Committed, READWRITE, Private00012000-00020000 (56.0 KB) Free, NOACCESS00020000-00021000 (4.00 KB) Committed, READWRITE, Private00021000-00030000 (60.0 KB) Free
25、, NOACCESS00030000-0012c000 (0.98 MB) Reserved, READONLY, Private0012c000-0012d000 (4.00 KB) Committed, GUARD, READWRITE, Private0012(12.0 KB) Committed, READWRITE, Private00130000-00135000 (20.0 KB) Committed, READONLY, Mapped00135000-00140000 (44.0 KB) Free, NOACCESS00140000-00147000
26、 (28.0 KB) Committed, READWRITE, Private00147000-00240000 ( 996 KB) Reserved, READONLY, Private00240000-00243000 (12.0 KB) Committed, READWRITE, Mapped00243000-00250000 (52.0 KB) Reserved, READONLY, Mapped00250000-00266000 (88.0 KB) Committed, READONLY, Mapped00266000-00270000 (40.0 KB) Free, NOACCE
27、SS00270000-002b1000 ( 260 KB) Committed, READONLY, Mapped002b1000-002c0000 (60.0 KB) Free, NOACCESS002( 260 KB) Committed, READONLY, Mapped00301000-00310000 (60.0 KB) Free, NOACCESS00316000-00320000 (40.0 KB) Free, NOACCESS00320000-00361000 ( 260 KB) Committed, READONLY, Mapped0036100
28、0-00370000 (60.0 KB) Free, NOACCESS00370000-00373000 (12.0 KB) Committed, READWRITE, Private00373000-00380000 (52.0 KB) Reserved, READONLY, Private00380000-00383000 (12.0 KB) Committed, READONLY, Mapped00383000-00390000 (52.0 KB) Free, NOACCESS00390000-00398000 (32.0 KB) Committed, READWRITE, Privat
29、e00398000-003a0000 (32.0 KB) Reserved, READONLY, Private003a0000-003a1000 (4.00 KB) Committed, READWRITE, Private003a1000-003b0000 (60.0 KB) Free, NOACCESS003b0000-003b1000 (4.00 KB) Committed, READWRITE, Private003b1000-003c0000 (60.0 KB) Free, NOACCESS003c0000-003c5000 (20.0 KB) Committed, READWRI
30、TE, Private003c5000-003d0000 (44.0 KB) Reserved, READONLY, Private003d0000-003d6000 (24.0 KB) Committed, READWRITE, Private003d6000-003e0000 (40.0 KB) Reserved, READONLY, Private003( 128 KB) Free, NOACCESS00400000-00401000 (4.00 KB) Committed, READONLY,Image, Module:5-2.exe00401000-00
31、46d000 ( 432 KB) Committed, EXECUTE_READ, Image0046(32.0 KB) Committed, READONLY, Image00475000-0047c000 (28.0 KB) Committed, READWRITE, Image0047(16.0 KB) Committed, READONLY, Image00480000-00487000 (28.0 KB) Committed, EXECUTE_READ, Mapped00487000-00540000 ( 740 KB) Res
32、erved, READONLY, Mapped00540000-00542000 (8.00 KB) Committed, EXECUTE_READ, Mapped00542000-00548000 (24.0 KB) Reserved, READONLY, Mapped00548000-00550000 (32.0 KB) Free, NOACCESS00550000-00653000 (1.01 MB) Committed, READONLY, Mapped00653000-00660000 (52.0 KB) Free, NOACCESS00660000-006e1000 ( 516 K
33、B) Committed, EXECUTE_READ, Mapped006e1000-00960000 (2.49 MB) Reserved, READONLY, Mapped00960000-00968000 (32.0 KB) Committed, READWRITE, Private00968000-00a60000 ( 992 KB) Reserved, READONLY, Private00a60000-74ae0000 (1.81 GB) Free, NOACCESS74ae0000-74ae1000 (4.00 KB) Committed, READONLY,Image, Mod
34、ule:USP10.dll74ae1000-74b25000 ( 272 KB) Committed, EXECUTE_READ, Image74b25000-74b28000 (12.0 KB) Committed, WRITECOPY, Image74b28000-74b2a000 (8.00 KB) Committed, READWRITE, Image74b2a000-74b2e000 (16.0 KB) Committed, WRITECOPY, Image74b2e000-74b2f000 (4.00 KB) Committed, READWRITE, Image74b2f000-
35、74b45000 (88.0 KB) Committed, READONLY, Image74b45000-76180000 (22.2 MB) Free, NOACCESS76180000-76181000 (4.00 KB) Committed, READONLY,Image, Module:IMM32.DLL76181000-76196000 (84.0 KB) Committed, EXECUTE_READ, Image76196000-76197000 (4.00 KB) Committed, READWRITE, Image76197000-7619d000 (24.0 KB) C
36、ommitted, READONLY, Image7619d000-76eb0000 (13.0 MB) Free, NOACCESS76eb0000-76eb1000 (4.00 KB) Committed, READONLY,Image, Module:Secur32.dll76eb1000-76ec0000 (60.0 KB) Committed, EXECUTE_READ, Image76ec0000-76ec1000 (4.00 KB) Committed, READWRITE, Image76ec1000-76ec3000 (8.00 KB) Committed, READONLY
37、, Image76ec3000-77b70000 (12.6 MB) Free, NOACCESS77b70000-77b71000 (4.00 KB) Committed, READONLY,Image, Module:msvcrt.dll77b71000-77bbf000 ( 312 KB) Committed, EXECUTE_READ, Image77bbf000-77bc1000 (8.00 KB) Committed, WRITECOPY, Image77bc1000-77bc2000 (4.00 KB) Committed, READWRITE, Image77bc2000-77
38、bc3000 (4.00 KB) Committed, WRITECOPY, Image77bc3000-77bc6000 (12.0 KB) Committed, READWRITE, Image77bc6000-77bca000 (16.0 KB) Committed, READONLY, Image77bca000-77bd0000 (24.0 KB) Free, NOACCESS77bd0000-77bd1000 (4.00 KB) Committed, READONLY,Image, Module:GDI32.dll77bd1000-77c14000 ( 268 KB) Commit
39、ted, EXECUTE_READ, Image77c14000-77c16000 (8.00 KB) Committed, READWRITE, Image77c16000-77c19000 (12.0 KB) Committed, READONLY, Image77c19000-77c20000 (28.0 KB) Free, NOACCESS77c20000-77c21000 (4.00 KB) Committed, READONLY,Image, Module:RPCRT4.dll77c21000-77cba000 ( 612 KB) Committed, EXECUTE_READ,
40、Image77cba000-77cbb000 (4.00 KB) Committed, READWRITE, Image77cbb000-77cc1000 (24.0 KB) Committed, READONLY, Image77cc1000-77e10000 (1.30 MB) Free, NOACCESS77e10000-77e11000 (4.00 KB) Committed, READONLY,Image, Module:USER32.dll77e11000-77e71000 ( 384 KB) Committed, EXECUTE_READ, Image77e71000-77e72
41、000 (4.00 KB) Committed, READWRITE, Image77e72000-77e73000 (4.00 KB) Committed, WRITECOPY, Image77e73000-77ea0000 ( 180 KB) Committed, READONLY, Image77ea0000-77eb0000 (64.0 KB) Free, NOACCESS77eb0000-77eb1000 (4.00 KB) Committed, READONLY,Image, Module:SHLWAPI.dll77eb1000-77efb000 ( 296 KB) Committ
42、ed, EXECUTE_READ, Image77efb000-77efc000 (4.00 KB) Committed, READWRITE, Image77efc000-77efd000 (4.00 KB) Committed, WRITECOPY, Image77efd000-77f02000 (20.0 KB) Committed, READONLY, Image77f02000-77f30000 ( 184 KB) Free, NOACCESS77f30000-77f31000 (4.00 KB) Committed, READONLY,Image, Module: ADVAPI32
43、.dll77f31000-77fa1000 ( 448 KB) Committed, EXECUTE_READ, Image77fa1000-77fa3000 (8.00 KB) Committed, READWRITE, Image77fa3000-77fa5000 (8.00 KB) Committed, WRITECOPY, Image77fa5000-77fdc000 ( 220 KB) Committed, READONLY, Image77fdc000-7c800000 (72.1 MB) Free, NOACCESS7c800000-7c801000 (4.00 KB) Committed, READONLY,Image, Module: kernel32.dll7c801000-7c88b000 ( 552 KB) Committed, EXECUTE_READ, Image7c88b000-7c88e000 (12.0 KB)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 泰安新泰市紫光实验中学招聘笔试参考题库及答案解析
- 2025广东中共东莞市委外事工作委员会办公室招聘编外聘用人员1人参考题库附答案
- 2025江苏恒神股份有限公司社会熟练人员招聘77人模拟试卷附答案
- 2025广东汕头市市属医疗卫生机构下半年招聘工作人员132人(公共基础知识)综合能力测试题附答案
- 2025年下半年宜春市市直机关事业单位编外用工公开招聘【82人】备考题库附答案
- 2025广东广州花都城投西城经济开发有限公司第二次招聘项目用笔试备考试题附答案
- 2025河北邯郸市馆陶县选调事业单位人员3人备考题库附答案
- 2026广东佛山市南方医科大学珠江医院三水医院招聘高层次人才4人笔试备考试题及答案解析
- 2026四川雅安市石棉县佳业劳务派遣有限公司应急管理局招聘综合应急救援大队工作人员拟聘用公示笔试备考试题及答案解析
- 2025秋人教版道德与法治八年级上册3.2营造清朗空间同步练习
- 慢性阻塞性肺疾病患者非肺部手术麻醉及围术期管理的专家共识
- 灯谜大全及答案1000个
- 中建办公商业楼有限空间作业专项施工方案
- 急性胰腺炎护理查房课件ppt
- 初三数学期末试卷分析及中考复习建议课件
- GB/T 4074.8-2009绕组线试验方法第8部分:测定漆包绕组线温度指数的试验方法快速法
- GB/T 40222-2021智能水电厂技术导则
- 第十章-孤独症及其遗传学研究课件
- 人教版四年级上册语文期末试卷(完美版)
- 防空警报系统设计方案
- 酒店管理用水 酒店厨房定额用水及排水量计算表分析
评论
0/150
提交评论