操作系统实验内存管理.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验报告 一、实验题目实验 内存管理 二、实验目的 1.从不同侧面了解Windows2000/XP对用户进程的虚拟内存空间的管理、分配方法。 2.了解跟踪程序的编写方法(与被跟踪程序保持同步,使用Windows提供的信号量)。 3.对Windows分配虚拟内存、改变虚拟内存状态,以及对物理内存和页面文件状态查询的API函数的功能、参数限制、使用规则进一步了解。 三、实验内容 1.使用Windows2000/XP的API函数,编写一个包含两个线程的进程,一个线程用于模拟内存分配活动,一个线程用于跟踪第一个线程的内存行为,而且要求两个线程之间通过信号实现同步。 2.模拟内存活动的线程可以从一个文件中读出要进行的内存操作,每个内存操作包括如下内容: 时间:操作等待时间。 块数:分配内存的粒度。 操作:包括保留一个区域、提交一个区域、释放一个区域、回收一个区域和加锁与解锁一个区域,可以将这些操作编号存放在文件中。 保留是指保留进程的虚拟地址空间,而不分配物理存储空间。 回收是释放物理内存空间,但再虚拟地址空间仍然保留,它与提交相应,即可以回收以提交的内存块。 释放是指将物理存储和虚拟存储地址空间全部释放,它与保留相对应,即可以释放已经保留的内存块。 大小:块的大小。 访问权限:共五种,分别是PAGE_READONLY,PAGE_READWRITE, PAGE_EXECUTE, PAGE_EXECUTE_READ和PAGE_EXECUTE_READWRITE。可以将这些权限编号存放于文件中跟踪线程将页面大小、已使用的地址范围、物理内存总量,以及虚拟内存总量等信息显示出来。 四、实验环境 使用的操作系统及版本。 Windows xp professional 使用的编译系统及版本。 Visual c++ 6.0 五、实验源代码 生成随即文件file # include fstream.h # include stdio.h # include stdlib.h # include time.h struct operation { int time; //起始时间 int block;//内存页数 int oper; //操作 int protection;//权限 } ; int main() { FILE *file ; file=fopen(file,wb);//opfile为二进制,用于确定内存操作 operation op; for(int j=0;j6;j++)//0-保留;1-提交;2-锁;3-解锁;4-回收;5-释放; for(int i=0;i5;i++) //0_READONLY //1_WRITE //2_EXECUTE //3_EXECUTE_READ //4_EXECUTE_READWRITE { op.time=rand()%1000; //随机生成等待时间 op.block=rand()%5+1;//随机生成块 op.oper=j; op.protection=i; fwrite(op,sizeof(operation),1,file);//将生成的结果写入文件 } cout文件生成成功!\n; return 0; } 内存操作程序 #includestdio.h #includestdlib.h #includewindows.h #includeiostream.h #includefstream.h struct operation { int time; int block; int oper; int protection; }; struct trace { LPVOID start; long size; }; HANDLE allo,trac; DWORD Tracker(LPDWORD lpdwparm)//跟踪线程的内存行为,并输出必要信息 { ofstream outfile; outfile.open(out.txt); for(int i=0;i=30;i++) { WaitForSingleObject(trac,INFINITE);//等待allocator一次内存分配活动结束 //打印内存状况和系统状况 outfileiendl; SYSTEM_INFO info;//系统信息 GetSystemInfo(info); outfile页面文件大小\tinfo.dwPageSizeendl;

文档评论(0)

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

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

1亿VIP精品文档

相关文档