【精品】实验六存储管理.doc

【精品】实验六存储管理.doc

ID:51078841

大小:114.00 KB

页数:12页

时间:2020-03-18

【精品】实验六存储管理.doc_第1页
【精品】实验六存储管理.doc_第2页
【精品】实验六存储管理.doc_第3页
【精品】实验六存储管理.doc_第4页
【精品】实验六存储管理.doc_第5页
资源描述:

《【精品】实验六存储管理.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验六存储管理实践【实验目的】1)通过实验了解Windows2000内存的使用,学习如何在应用程序中管理内存,体会WindowsPZ用程序内存的简单性和自我防护能力。学习检查虚拟内存空间或对其进行操作;了解Windows2000的内存结构和虚拟内存的管理,进而了解进程堆和Windows为使用内存而提供的一些扩展功能。2)加深对动态分区分配算法的理解,进一步掌握首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法的实现方法。【实验学时】建议2学时【实验内容】在Windows2000环境下,4GB的虚拟地址空间被划分成两个部分:低端2G

2、B提供给进程使用,高端2GB提供给系统使用。这意味着用户的应用程序代码,包括DLL以及进程使用的齐种数据等,都装在用户进程地址空间内(低端2GB)c第一部分虚拟内存的检测检测进程的虚拟地址空间//T•程vmwalker#include#include#include#include#pragmacomment(lib,HShlwapi.libM)//显示内存保护的方法。//保护标记指示:允许应用程序对内存进行访问的类型以及操作系统强制访问的类型inlineb

3、oolTestSet(DWORDdwTarget,DWORDdwMask){return((dwTarget&dwMask)==dwMask);}〃宏定义一个函数//TestSet为内联函数#defineSHOWMASK(dwTarget,type)讦(TestSet(dwTarget,PAGE_##type)){std::cout«",”«#type;}voidShowProtection(DWORDdwTarget)SHOWMASK(dwTarget,READONLY);SHOWMASK(dwTarget,GUARD);SHOWM

4、ASK(dwTarget,NOCACHE);SHOWMASK(dwTarget,READWRITE);SHOWMASK(dwTarget,WRITECOPY);SHOWMASK(dwTarget,EXECUTE);SHOWMASK(dwTarget,EXECUTE_READ);SHOWMASK(dwTarget,EXECUTE_READWRITE);SHOWMASK(dwTarget,EXECUTE_WRITECOPY);SHOWMASK(dwTarget,NOACCESS);//遍历整个虚拟内存,并显示虚拟内存属性voidWalkVM(

5、HANDLEhProcess){//首先,获得系统信息SYSTEM」NFOsi;::ZeroMemory(&si,sizeof(si));::GetSystemlnfb(&si);//分配要存放信息的缓冲区MEMORY_BASIC_INFORMATIONmbi;::ZeroMemory(&mbi,sizeof(mbi));//循环整个应用程序地址空间LPCVOIDpBlock=(LPVOID)si.lpMinimumApplicationAddress;while(pBlock

6、//获得下一个虚拟内存块的信息if(::VirtualQueryEx(hProcess,pBlock,&mbi,sizeof(mbi))==sizeof(mbi))//相关的进程//开始位置//缓冲区//大小的确认//计算块的结尾及其大小LPCVOIDpEnd=(PBYTE)pBlock+mbi.RegionSize;TCHARszSize[MAX_PATHJ;::StrFormatByteSize(mbi.RegionSize,szSize,MAX_PATH);//显示块地址和大小std::cout.fill('()');std::co

7、ut«std::hex«std::setw(8)«(DWORD)pBlock«”■”«std::hex«std::setw(8)«(DWORD)pEnd«(::strlen(szSize)==7?"(":”(”)«szSize«”)”;//显示块的状态switch(mbi.State){caseMEM_COMMIT:std::cout«"Committed";break;caseMEM_FREE:std::cout«"Free1';break;caseMEM.RESERVE:std::cout«"ReservedH;break;}//显示

8、保护方式if(mbi.Protect==0&&mbi.State!二MEM_FREE){mbi.Protect=PAGE_READONLY;}ShowProtection(mbi.Protec

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。