1 / 26
文档名称:

北交大操作系统作业-内存管理器实验.doc

格式:doc   大小:63KB   页数:26页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

北交大操作系统作业-内存管理器实验.doc

上传人:文库旗舰店 2019/11/18 文件大小:63 KB

下载得到文件列表

北交大操作系统作业-内存管理器实验.doc

文档介绍

文档介绍:实验三内存管理                      ,并进行测试和对不同分配策略的性能展开比较评估。本次实验,选择的分配策略:First-fit和next-、设计一个内存管理器,支持至少两种分配策略(本实验使用firstfit策略和nextfit策略);2、[65536];:intmm_init()//初始化intmm_request(intn)//申请空间voidmm_release(intp)//((unsignedchar)time(NULL));tmp=(rand()%1024)+1;//=(rand()%j);while(p[tmp]==-1){tmp=rand()%j;}requestsize=requestsize-BinToInt(&mm[p[tmp]+4]);mm_release(p[tmp]);  cout<<"释放指针"<<p[tmp]<<endl;    p[tmp]=-1;,分配策略分别为:first-fit和next-#include<iostream>#include<>#include<>#include<>#include""usingnamespacestd;intmain(){inti;intj=0;//分配指针数intp[1000];//用于存放分配出的指针inttmp;intrequestsize=0;//统计申请空间intk=0;//统计搜索步数srand((unsignedchar)time(NULL));step=0;mm_init();for(i=0;i<30;i++)//模拟30步{cout<<"第"<<i+1<<"步"<<endl;do{tmp=(rand()%1024)+1;//最大申请1024cout<<"申请空间"<<tmp<<"字节"<<endl;p[j]=mm_request(tmp);if(p[j]!=-1){requestsize=requestsize+tmp;k=k+step;cout<<"分配指针"<<p[j]<<endl;cout<<endl;j++;}else{cout<<"剩余空间不足,分配失败"<<endl;}}while(p[j]!=-1);tmp=(rand()%j);while(p[tmp]==-1){tmp=rand()%j;}requestsize=requestsize-BinToInt(&mm[p[tmp]+4]);mm_release(p[tmp]);cout<<"释放指针"<<p[tmp]<<endl;p[tmp]=-1;//以下为性能统计指标cout<<endl;cout<<"平均申请空间:"<<(double)requestsize/(double)j<<"字节"<<endl;cout<<"平均空间利用率:"<<(double)requestsize/(double)65536<<endl;cout<<"平均搜索步数:"<<(double)k/(double)j<<endl;cout<<endl;if((i+1)%5==0){system("pause");}}}  [65536];intstep;//记录搜索步数intBinToInt(unsignedchar*s)//把char类型变成int{inti;chartmp[4];intt;for(i=0;i<4;i++){  tmp[3-i]=s[i];  }memcpy(&t,tmp,4);returnt;}voidIntToBin(ints,unsignedchar*t)//把int类型变成char{inti;chartmp[4];memcpy(tmp,&s,4);for(i=0;i<4;i++){t[i]=tmp[3-i];  }}intmm_init(){memset(mm,0,65536);IntToBin(-1,mm);//前向指针置-1放在数组的第一个位置IntToBin(65536,&mm[4]);//整个块大小,放在第四个位置IntToBin(-1,&mm[65536-4]);//后向指针置