实验三:存储管理系统_第1页
实验三:存储管理系统_第2页
实验三:存储管理系统_第3页
实验三:存储管理系统_第4页
实验三:存储管理系统_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

文案大全文案大全一、实验名称实验三:存储管理[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.cpp。程序5-1:获取有关系统的内存设置的信息步骤4:单击“Build”菜单中的“Compile5-1.cpp”命令,并单击“是”按钮确认。系统对4-1.cpp进行编译。步骤5:编译完成后,单击“Build”菜单中的“Build5-1.exe”命令,建立5-1.exe可执行文件。操作能否正常进行?如果不行,则可能的原因是什么?答:操作能正常进行。步骤6:在工具栏单击“ExecuteProgram”(执行程序)按钮,执行5-1.exe程序。运行结果(分行书写。如果运行不成功,则可能的原因是什么?):1)虚拟内存每页容量为:2)最小应用地址:0x000100003)最大应用地址为:0x7ffeffff4)当前可供应用程序使用的内存空间为:5)当前计算机的实际内存大小为:1.99GB阅读和分析程序5-1,请回答问题:1)理论上每个windows应用程序可以独占的最大存储空间是:4GB2)在程序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.cpp。清单5-2检测进程的虚拟地址空间清单5-2中显示一个walkVM()函数开始于某个进程可访问的最低端虚拟地址处,并在其中显示各块虚拟内存的特性。虚拟内存中的块由VirsualQueryEX()API定义成连续快或具有相同状态(自由区,已调配区等)的内存,并分配以一组统一的保护标志(只读、可执行等)。步骤4:单击“Build”菜单中的“Compile5-2.cpp”命令,并单击“是”按钮确认。系统对5-2.cpp进行编译。步骤5:编译完成后,单击“Build”菜单中的“Build5-2.exe”命令,建立5-2.exe可执行文件。操作能否正常进行?如果不行,则可能的原因是什么?答:操作能正常运行。步骤6:在工具栏单击“ExecuteProgram”(执行程序)按钮,执行5-2.exe程序。1)分析运行结果(如果运行不成功,则可能的原因是什么)按committed,reserved,free等三种虚拟地址空间分别记录实验数据,其中“描述”是对该组数据的简单描述,例如,对下列一组数据:00010000-00012000<8.00KB>Committed,READWRITE,Private可描述为:具有READWRITE权限的已调配私有内存区。将系统当前的自由区(Free)虚拟地址空间填入表3-3中。表3-3实验记录地址大小虚拟空间类型访问权限描述000120000002000056.0KBfreeNOACCESS没有任何权限的已调配的共有内存区000210000003000060.0KBfreeNOACCESS没有任何权限的已调配的共有内存区001350000014000044.0KBfreeNOACCESS没有任何权限的已调配的共有内存区002660000027000040.0KBfreeNOACCESS没有任何权限的已调配的共有内存区002b1000-002c000060.0KBfreeNOACCESS没有任何权限的已调配的共有内存区00301000-60.0KBfreeNOACCESS没有任何权限的已

00310000调配的共有内存区003160000032000040.0KBfreeNOACCESS没有任何权限的已调配的共有内存区将系统当前的已调配区(Committed)虚拟表3-4实2地址空间填入表3-4中。验记录地址大小虚拟空间类型访问权限描述00010000000120008.00KBCommittedPrivate只有具有READWRITE权限的已调配私有内存区00020000000210004.00KBCommittedPrivate只有具有READWRITE权限的已调配私有内存区0012C000-0012d0004.00KBCommittedPrivate具有GUARD,READEWRITE权限的已调配私有内存区0012d000-0013000012.0KBCommittedPrivate只有具有READWRITE权限的已调配私有内存区001300000013500020.0KBCommittedMapped只有具有READONLY权限的已调配映射内存区001400000014700028.0KBCommittedPrivate只有具有READWRITE权限的已调配私有内存区002400000024300012.0KBCommittedMapped只有具有READWRITE权限的已调配映射内存区将系统当前的保留区(Reserved)虚拟地址表3-5实】:空间填入表3-5中。验记录地址大小虚拟空间类型访问权限描述000300000012C0000.98MBReservedPrivate只有具有READONLY权限的已调配私有内存区0014700000240000996KBReservedPrivate只有具有READONLY权限的已调配私有内存区002430000025000052.0KBReservedMapped只有具有READONLY权限的已调配映射内存区003730000038000052.0KBReservedPrivate只有具有READONLY权限的已调配私有内存区00398000-32.0KBReservedPrivate只有具有003a0000READONLY权限的已调配私有内存区003C5000-003d000044.0KBReservedPrivate只有具有READONLY权限的已调配私有内存区003d6000-003e000040.0KBReservedPrivate只有具有READONLY权限的已调配私有内存区2)从上述输出结果,对照分析清单5-2的程序,请简单描述程序运行的流程:答:该程序从主函数Main()出发,调用voidWalkVM(HANDLEhProcess)函数,voidWalkVM(HANDLEhProcess)函数获得系统信息,分配应用程序内存地址空间。然后开始做循环,从函数运行开始每次获得下一个虚拟程序内存块的信息,之后计算块的结尾及大小,然后再显示块的大小与位置,状态,显示保护方式(voidShowProtection(DWORDdwTarget)),将文件名显示出来,移动块指针获得下一块,依次这样循环下去,直至结束。2.虚拟内存的分配与释放能正确使用系统函数GetMeoryStatus()和数据结构MEMORY_STATUS了解系统内存和虚拟存储空间使用情况,会使用VirsualAlloc()函数和VirsualFree()函数分配和释放虚拟内存空间。步骤1:在VC6.0环境下选择Win32ConsoleApplication建立一个控制台工程文件,选择AnapplicationthatSupportsMFC。步骤2:编辑并编译完成后,单击“Build”菜单中的“BuildGetMemoryStatus.exe”命令,建立GetMemoryStatus.exe可执行文件。操作能否正常进行?如果不行,则可能的原因是什么?答:操作能正常进行。步骤3:在工具栏单击“ExecuteProgram”按钮,执行GetMemoryStatus.cpp.exe程序。分析程序GetMemoryStatus.cpp的运行结果1)请描述运行结果(如果运行不成功,则可能的原因是什么?):答:运行结果如下:CurrentMemoryStatusis:TotalPhysicalMemoryis2047MBAvailablePhysicalMemoryis2047MBTotalPageFileis4095MBAvailablePageFileis4095MBTotalVirtualMemoryis2047MBAvailableVirsualmemoryis2031MBMemoryLoadis22%NowAllocate32MVirsualMemoryand2MPhysicalMemoryCurrentMemoryStatusis:TotalPhysicalMemoryis2047MBAvailablePhysicalMemoryis2047MBTotalPageFileis4095MBAvailablePageFileis4095MBTotalVirtualMemoryis2047MBAvailableVirsualmemoryis1997MBMemoryLoadis22%NowRelease32MVirsualMemoryand2MPhysicalMemoryCurrentMemoryStatusis:TotalPhysicalMemoryis2047MBAvailablePhysicalMemoryis2047MBTotalPageFileis4095MBAvailablePageFileis4095MBTotalVirtualMemoryis2047MBAvailableVirsualmemoryis2031MBMemoryLoadis22%Pressanykeytocontinue2)根据运行输出结果,若要改变分配和回收的虚拟内存和物理内存的大小,要改变程序代码的语句,分别为:答:要改变的分配虚拟内存的程序代码语句为: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);根据运行输出结果,对照分析5-2程序,可以看出程序运行的流程吗?请简单描述:答:程序开始运行,分配虚拟内存为32M,物理内存为2M,后进行虚拟内存释放,释放了32M虚拟内存,2M物理内存。

c:C*C:\ProgrMFilesMicrosoft¥isualStudioMyFrojects\Tini\Debiig\Tiikd.exeCun'cntMcntDi-yGtatlibio=TotalFliv^icalMeinory±b204?MDAvolliablePJiysiccilMenori1is2047NDTotalFayeFileis-J095MDftuailabltPageFileIs4695METot且1UiptnalMemoryis2047MBAvailableUirsualmenoryis2031MBHenoryLoadis22KNoufillccate32MUii'sualMemoryand2MPhysicalllenopyCurrentMemoryStatusis:TotalPhysicalMenoryis2047MBAuailablePhysicalFtencn乌is2047NBTotalPageFileis-1095MBAuailablePsgeFileis4095METotalUirtnalMemori/is2047MBAuailableUirsualmemoryis1997NBLoad.i±22址NowReLe^se32MUii'sualMe11101*1^and2MPhj/sicalMemDryCurrcntMcniDryGtdtnsis:TotalPhysicalMcinory±3204?MDAvaildLblePhysl>c<ilMenur5is2047NDTotalPageFileis-1095MBAuailablePageFileis4695MBTotalUiptnalMemoryis2047MBHuailableUipsualmemoryis2031TIBhenoryLoadis22忙Pressanyk巳ytocontinuE四、[2]实验结论通过本次实验了解windowsServer2003的内存结构和虚拟内存的管理,较为清楚的理解了在windowssever2003中虚拟内存的检测以及其内存分配和内存释放的运行过程。进而了解进程堆和windows为使用内存而提供的一些扩展功能。在程序运行的过程中,首先会检测到需要使用的虚拟内存,其次通过调用函数去分配当前部分所需要的虚拟内存大小,之后进行虚拟内存的分配,最后,运行结束,释放虚拟内存。在这整个过程中,能够节约内存的使用,增加了处理事务的效率。附录:5-2.cpp运行结果00010000-00012000(8.00KB)Committed,READWRITE,Private00012000-00020000(56.0KB)Free,NOACCESS00020000-00021000(4.00KB)Committed,READWRITE,Private00021000-00030000(60.0KB)Free,NOACCESS00030000-0012c000(0.98MB)Reserved,READONLY,Private0012c000-0012d000(4.00KB)Committed,GUARD,READWRITE,Private001212.0KB)Committed,READWRITE,Private00130000-00135000(20.0KB)Committed,READONLY,Mapped00135000-00140000(44.0KB)Free,NOACCESS00140000-00147000(28.0KB)Committed,READWRITE,Private00147000-00240000(996KB)Reserved,READONLY,Private00240000-00243000(12.0KB)Committed,READWRITE,Mapped00243000-00250000(52.0KB)Reserved,READONLY,Mapped00250000-00266000(88.0KB)Committed,READONLY,Mapped00266000-00270000(40.0KB)Free,NOACCESS00270000-002b1000(260KB)Committed,READONLY,Mapped002b1000-002c0000(60.0KB)Free,NOACCESS002260KB)Committed,READONLY,Mapped00301000-00310000(60.0KB)Free,NOACCESS00310000-00316000(24.0KB)Committed,READONLY,Mapped

00316000-00320000(40.0KB)00316000-00320000(40.0KB)00320000-00361000(260KB)00361000-00370000(60.0KB)00370000-00373000(12.0KB)00373000-00380000(52.0KB)00380000-00383000(12.0KB)00383000-00390000(52.0KB)00390000-00398000(32.0KB)00398000-003a0000(32.0KB)003a0000-003a1000(4.00KB)003a1000-003b0000(60.0KB)003b0000-003b1000(4.00KB)003b1000-003c0000(60.0KB)003c0000-003c5000(20.0KB)003c5000-003d0000(44.0KB)003d0000-003d6000(24.0KB)003d6000-003e0000(40.0KB)003128KB)00400000-00401000(4.00KB)5-2.exe00401000-0046d000(432KB)004632.0KB)00475000-0047c000(28.0KB)004716.0KB)00480000-00487000(28.0KB)00487000-00540000(740KB)00540000-00542000(8.00KB)00542000-00548000(24.0KB)00548000-00550000(32.0KB)Committed,READONLY,MappedFree,NOACCESSCommitted,READWRITE,PrivateReserved,READONLY,PrivateCommitted,READONLY,MappedFree,NOACCESSCommitted,READWRITE,PrivateReserved,READONLY,PrivateCommitted,READWRITE,PrivateFree,NOACCESSCommitted,READWRITE,PrivateFree,NOACCESSCommitted,READWRITE,PrivateReserved,READONLY,PrivateCommitted,READWRITE,PrivateReserved,READONLY,PrivateFree,NOACCESSCommitted,READONLY,Image,Module:Committed,EXECUTE_READ,ImageCommitted,READONLY,ImageCommitted,READWRITE,ImageCommitted,READONLY,ImageCommitted,EXECUTE_READ,MappedReserved,READONLY,MappedCommitted,EXECUTE_READ,MappedReserved,READONLY,MappedFree,NOACCESS(1.01MB)Committed,READONLY,Mapped(1.01MB)Committed,READONLY,Mapped(52.0KB)Free,NOACCESS(516KB)Committed,EXECUTE_READ,Mapped(2.49MB)Reserved,READONLY,Mapped(32.0KB)Committed,READWRITE,Private(992KB)Reserved,READONLY,Private(1.81GB)Free,NOACCESS(4.00KB)Committed,READONLY,Image,Module(22.2MB)Free,NOACCESS(4.00KB)Committed,READONLY,Image,Module(84.0KB)Committed,EXECUTE_READ,Image(4.00KB)Committed,READWRITE,Image(24.0KB)Committed,READONLY,Image(13.0MB)Free,NOACCESS(4.00KB)Committed,READONLY,Image,Module(60.0KB)Committed,EXECUTE_READ,Image(4.00KB)Committed,READWRITE,Image(8.00KB)Committed,READONLY,Image(12.6MB)Free,NOACCESS(4.00KB)Committed,READONLY,Image,Module00550000-0065300000653000-0066000000660000-006e1000006e1000-0096000000960000-0096800000968000-00a6000000a60000-74ae000074ae0000-74ae1000USP10.dll74ae1000-74b2500074b25000-74b2800074b28000-74b2a00074b2a000-74b2e00074b2e000-74b2f00074b2f000-74b4500074b45000-7618000076180000-76181000IMM32.DLL76181000-7619600076196000-7619700076197000-7619d0007619d000-76eb000076eb0000-76eb1000Secur32.dll76eb1000-76ec000076ec0000-76ec100076ec1000-76ec300076ec3000-77b7000077b70000-77b71000(272KB)Committed,(12.0KB)Committed,(8.00KB)Committed,(16.0KB)Committed,(4.00KB)Committed,(88.0KB)Committed,EXECUTE_READ,ImageWRITECOPY,ImageREADWRITE,ImageWRITECOPY,ImageREADWRITE,ImageREADONLY,Imagemsvcrt.dll77b71000-77bbf000(312KB)Committed,EXECUTE_READ,Image77bbf000-77bc1000(8.00KB)Committed,WRITECOPY,Image77bc1000-77bc2000(4.00KB)Committed,READWRITE,Image77bc2000-77bc3000(4.00KB)Committed,WRITECOPY,Image77bc3000-77bc6000(12.0KB)Committed,READWRITE,Image77bc6000-77bca000(16.0KB)Committed,READONLY,Image77bca000-77bd0000(24.0KB)Free,NOACCESS77bd0000-77bd1000(4.00KB)Committed,READONLY,Image,Module:GDI32.dll77bd1000-77c14000(268KB)Committed,EXECUTE_READ,Image77c14000-77c16000(8.00KB)Committed,READWRITE,Image77c16000-77c19000(12.0KB)Committed,READONLY,Image77c19000-77c20000(28.0KB)Free,NOACCESS77c20000-77c21000(4.00KB)Committed,READONLY,Image,Module:RPCRT4.dll77c21000-77cba000(612KB)Committed,EXECUTE_READ,Image77cba000-77cbb000(4.00KB)Committed,READWRITE,Image77cbb000-77cc1000(24.0KB)Committed,READONLY,Image77cc1000-77e10000(1.30MB)Free,NOACCESS77e10000-77e11000(4.00KB)Committed,READONLY,Image,Module:USER32.dll77e11000-77e71000(384KB)Committed,EXECUTE_READ,Image77e71000-77e72000(4.00KB)Committed,READWRITE,Image77e72000-77e73000(4.00KB)Committed,WRITECOPY,Image77e73000-77ea0000(180KB)Committed,READONLY,Image77ea0000-77eb0000(64.0KB)Free,NOACCESS77eb0000-77eb1000(4.00KB)Committed,READONLY,Image,Module:SHLWAPI.dll77eb1000-77efb00077eb1000-77efb00077efb000-77efc00077efc000-77efd00077efd000-77f0200077f02000-77f3000077f30000-77f31000ADVAPI32.dll77f31000-77fa100077fa1000-77fa300077fa3000-77fa500077fa5000-77fdc00077fdc000-7c8000007c800000-7c801000kernel32.dll7c801000-7c88b0007c88b000-7c88e0007c88e000-7c8900007c890000-7c92b0007c92b000-7c9300007c930000-7c931000ntdll.dll7c931000-7c9ba0007c9ba000-7c9bd0007c9bd000-7c9be0007c9be000-7c9bf0007c9bf000-7c9c00007c9c0000-7ca030007ca03000-7f0000007f000000-7f001000(296KB)Committed,EXECUTE_READ,Image(4.00KB)Committed,READWRITE,Image(4.00KB)Committed,WRITECOPY,Image(20.0KB)Committed,READONLY,Image(184KB)Free,NOACCESS(4.00KB)Committed,READONLY,Image,Module:(448

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论