5实验五存储管理参考代码(实际物理内存、虚拟内存操作)参考代码要点.doc

5实验五存储管理参考代码(实际物理内存、虚拟内存操作)参考代码要点.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5实验五存储管理参考代码(实际物理内存、虚拟内存操作)参考代码要点

五、源程序(含注释)清单 #include windows.h #include stdio.h #include process.h #include time.h unsigned _stdcall simulator(void *); unsigned _stdcall inspector(void *); LPVOID BASE_PTR; int Actnum=0; //主函数,主要是用于启动用于模拟虚存活动和进行监控的两个线程; int main(int argc, char* argv[]) { unsigned ThreadID[2]; _beginthreadex(NULL,0,simulator,NULL,0,ThreadID[0]); _beginthreadex(NULL,0,inspector,NULL,0,ThreadID[1]); getchar();//输入回车即可终止程序; return 0; } //模拟一系列的虚存活动,作为一个独立的线程运行; unsigned _stdcall simulator(void *) { DWORD OldProtect; int randnum; printf(Now the simulator procedure has been started.\n); //产生一个随机数种子; srand( (unsigned)time( NULL ) ); //在一个死循环中,用随机数控制,不断进行虚存操作活动; while(1) { Sleep(500);//控制整个模拟和监控的速度; while (Actnum!=0) { Sleep(500);//等待,直到监控线程捕捉到上一个模拟动作后再继续下一个动作; } randnum=7rand(); switch(randnum)//注意各个动作中的虚存指针均使用BASE_PTR;它在过程中由虚存分配 //函数动态调整,如果某动作不成功,则将不会被监控线程监控到; { case 0: if (BASE_PTR=VirtualAlloc(NULL,1024*32,MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE)) { Actnum=1;//虚存的保留与提交; } break; case 1: if (VirtualFree(BASE_PTR,1024*32,MEM_DECOMMIT)) { Actnum=2;//虚存的注销; } break; case 2: if (VirtualFree(BASE_PTR,0,MEM_RELEASE)) { Actnum=3;//虚存的注销并释放虚存空间; } break; case 3: if (VirtualProtect(BASE_PTR,1024*32,PAGE_READONLY,OldProtect)) { Actnum=4;//改变虚拟内存页的保护; } break; case 4: if (VirtualLock(BASE_PTR,1024*12)) { Actnum=5;//锁定虚拟内存页; } break; case 5: if (BASE_PTR=VirtualAlloc(NULL,1024*32,MEM_RESERVE,PAGE_READWRITE)) { Actnum=6;//虚存的保留; } break; default: break; }//end of switch }//end of while return 0; } //通过一个全局的变量来监视另一模拟线程的模拟活动,并通过适当的信息 //查询函数,将存储的使用和活动情况打出报告; unsigned _stdcall inspector(void *) { int QuOut=0; char para1[3000]; MEMORYSTATUS Vmeminfo; char tempstr[100]; MEMORY_BASIC_INFORMATION inspectorinfo1; int structsize = sizeof(MEMORY_BASIC_INFORMATION);

文档评论(0)

ee88870 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档