实验9虚拟存储器43846.docx





《实验9虚拟存储器43846.docx》由会员分享,可在线阅读,更多相关《实验9虚拟存储器43846.docx(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验9、Windows虚拟内存1 背景知识在Windowws环境下,44GB的虚拟拟地址空间被被划分成两个个部分:低端端2GB提供供给进程使用用,高端2GGB提供给系系统使用。这这意味着用户户的应用程序序代码,包括括DLL以及及进程使用的的各种数据等等,都装在用用户进程地址址空间内(低低端2GB)。用户过程程的虚拟地址址空间也被分分成三部分:1)虚拟内存的的已调配区(commiitted):具有备用用的物理内存存,根据该区区域设定的访访问权限,用用户可以进行行写、读或在在其中执行程程序等操作。2)虚拟内存的的保留区(rreservved):没没有备用的物物理内存,但但有一定的访访问权限o 3)
2、虚拟内存的的自由区(ffree):不限定其用用途,有相应应的PAGEE_NOACCCESS权权限。与虚拟内存区相相关的访问权权限告知系统统进程可在内内存中进行何何种类型的操操作。例如,用用户不能在只只有PAGEE_READDONLY权权限的区域上上进行写操作作或执行程序序;也不能在在只有PAGGE_EXEECUTE权权限的区域里里进行读、写写操作。而具具有PAGEE_NOACCCESS权权限的特殊区区域,则意味味着不允许进进程对其地址址进行任何操操作。在进程装入之前前,整个虚拟拟内存的地址址空间都被设设置为只有PPAGE_NNOACCEESS权限的的自由区域。当当系统装入进进程代码和数数据后,
3、才将将内存地址的的空间标记为为已调配区或或保留区,并并将诸如EXXECUTEE、READDWRITEE和READDONLY的的权限与这些区区域相关联。如表1所示,给给出了MEMMORY_BBASIC_INFORRMATIOON的结构,此此数据描述了了进程虚拟内内存空间中一一组虚拟内存存页面的当前前状态,其中中Statee项表明这些些区域是否为为自由区、已已调配区或保保留区;Prrotectt项则包含了了Windoows系统为为这些区域添添加了何种访访问保护;TType项则则表明这些区区域是可执行行图像、内存存映射文件还还是简单的私私有内存。VVirtuaalQuerryEX()API能让让用户
4、在指定定的进程中,对对虚拟内存地地址的大小和和属性进行检检测。Windowss还提供了一一整套能使用用户精确控制制应用程序的的虚拟地址空空间的虚拟内内存API。一一些用于虚拟拟内存操作及及检测的APPI如表2所所示。表1 MEMMORY_BBASIC_INFORRMATIOON结构的成成员成员名称目 的PVOID BBaseAdddresss虚拟内存区域开开始处的指针针PVOID AAllocaationBBase如果这个特定的的区域为子分分配区的话,则则为虚拟内存存外面区域的的指针;否则则,此值与BBaseAdddresss相同DWORD AAllocaationPProtecct虚拟内存最
5、初分分配区域的保保护属性。其其可能值包括括:PAGEE_NOACCCESS,PAGE_READOONLY,PPAGE_RREADWRRITE和PPAGE_EEXECUTTE_REAADDWORD RRegionnSize 虚拟内存区域的的字节数DWORD SState 区域的当前分配配状态。其可可能值为MEEM_COMMMIT,MMEM_FRREE和MEEM_RESSERVEDW()RD Proteect虚拟内存当前区区域的保护属属性。可能值值与AlloocatioonProttect成员员的相同DWORD TType虚拟内存区域中中出现的页面面类型。可能能值为MEMM_IMAGGE,MEMM
6、_ MAAPPED和和MEM_PPRIVATTE表2 虚拟内存存的APIAPl名称描 述VirtuallQueryyEx()通过填充MEMMORY_BBASIC_INFORRMATIOON结构检测测进程内虚拟拟内存的区域域VirtuaAAlloc()保留或调配进程程的部分虚拟拟内存,设置置分配和保护护标志VirtuallFree()释放或收回应用用程序使用的的部分虚拟地地址VirtuallProteect()改变虚拟内存区区域保护规范范VirtuallLock() 防止系统将虚拟拟内存区域通通过系统交换换到页面文件件中VirtuallUnlocck()释放虚拟内存的的锁定区域,必必要时,允许许
7、系统将其交交换到页面文文件中 提供虚拟内存分分配功能的是是VinuaalAllooc()APPI。该APPI支持用户户向系统要求求新的虚拟内内存或改变已已分配内存的的当前状态。用用户若想通过过VirtuualAllloc()函函数使用虚拟拟内存,可以以采用两种方方式通知系统统:1)简单地将内内存内容保存存在地址空间间内。2)请求系统返返回带有物理理存储区(RRAM的空间间或换页文件件)的部分地地址空间。用户可以用fllAlloccationn Typee参数(coommit和和reserrve)来定定义这些方式式,用户可以以通知Winndows按按只读、读写写、不可读写写、执行或特特殊方式来处
8、处理新的虚拟拟内存。与VirtuaalAllooc()函数数对应的是VVirtuaalFreee()函数,其其作用是释放放虚拟内存中中的已调配页页或保留页。用用户可利用ddwFreeeType参参数将已调配配页修改成保保留页属性。VirtuallProteect()是是VirtuualAllloc()的的一个辅助函函数,利用它它可以改变虚虚拟内存区的的保护规范。2 实验目的的1)通过实验了了解Winddows内存存的使用,学学习如何在应应用程序中管管理内存,体体会Winddows应用用程序内存的的简单性和自自我防护能力力。2)学习检查虚虚拟内存空间间或对其进行行操作。3)了解Winndows的
9、的内存结构和和虚拟内存的的管理,进而而了解进程堆堆和Winddows为使使用内存而提提供的一些扩扩展功能。3 实验内容容与步骤虚拟内存的检测测清单2所示的程程序使用ViirtuallQueryyEX()函函数来检查虚虚拟内存空间间。步骤1:在“开开始”菜单中单击击“程序”、 “Microosoft Visuaal Stuudio 660”、“MicrossoftViisualCC+600”,进入ViisualCC+窗口。步骤2:运行以以下程序清单单清单2 检测测进程的虚拟拟地址空间#includde#includde#includde#includde#pragmaa commment(lli
10、b,sshlwappi.libb)/以可读方式式对用户显示示保护的辅助助方法。/保护标记表表示允许应用用程序对内存存进行访问的的类型以及操操作系统强制制访问的类型型inline bool TestSSet(DWWORD ddwTargget, DDWORD dwMassk)returnn(dwTTargett & dwwMask)=dwMMask);#definee SHOWWMASK(dwTarrget,ttype)if(TesstSet(dwTarrget,PPAGE_#typee)std:ccout,#typee;void ShhowProotectiion(DWWORD ddwTarg
11、get)SHOWMAASK(dwwTargeet,REAADONLYY);SHOWMAASK(dwwTargeet,GUAARD);SHOWMAASK(dwwTargeet,NOCCACHE);SHOWMAASK(dwwTargeet,REAADWRITTE);SHOWMAASK(dwwTargeet,WRIITECOPPY);SHOWMAASK(dwwTargeet,EXEECUTE);SHOWMAASK(dwwTargeet,EXEECUTE_READ);SHOWMAASK(dwwTargeet,EXEECUTE_READWWRITE);SHOWMAASK(dwwTargeet,EXEEC
12、UTE_WRITEECOPY);SHOWMAASK(dwwTargeet,NOAACCESSS);/遍历整个虚虚拟内存并对对用户显示其其属性的工作作程序的方法法void WaalkVM(HANDLLE hPrrocesss)/首先,获获得系统信息息SYSTEMM_INFOO si;:ZerooMemorry(&sii,sizeeof(sii);:GetSSystemmInfo(&si);/分配要存存放信息的缓缓冲区MEMORYY_BASIIC_INFFORMATTION mmbi;:ZerooMemorry(&mbbi,sizzeof(mmbi);/循环整个个应用程序地地址空间LPCVOIID
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 虚拟 存储器 43846

限制150内