C语言 页面淘汰算法 OPT FIFO LRU CLOCK_第1页
C语言 页面淘汰算法 OPT FIFO LRU CLOCK_第2页
C语言 页面淘汰算法 OPT FIFO LRU CLOCK_第3页
C语言 页面淘汰算法 OPT FIFO LRU CLOCK_第4页
C语言 页面淘汰算法 OPT FIFO LRU CLOCK_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《操作系统原理》

上机作业(报告)作业: 页面淘汰算法作业编号 6题目 页面淘汰/置换算法【题目要求】通过模拟实现请求页式存储管理的几种基本页面置换算法,了解虚拟存储技术的特点,掌握虚拟存储请求页式存储管理中几种基本页面置换算法的基本思想和实现过程,并比较它们的效率。针对一个页框,根据实验数据,以OPT算法为参考,研究FIFO页面淘汰算法、LRU页面淘汰以及CLOCK算法针对同一批实验数据的缺页率,以及研究在不同页框设置下的各算法缺页率表现情况。页面引用序列为:4,3,2,1,4,3,5,4,3,2,1,5(1) 固定分配局部置换情况下,驻留集大小为3,针对该内存页面引用序列模拟各算法的运行过程,并计算缺页率。(2) 模拟驻留集大小为4和5的情况下各算法的运行过程和缺页率。其菜单如下:内存分配和回收***********0.退出OPT算法实现LRU算法实现FIFO算法实现CLOCK算法作业要求显示缺页率对比表作业要求【实习要求】可选编程语言:C/C++/Java/C#/Python;实现在同一个程序文件中(C/C++);请适当注释;【实现提示】所需变量N:程序执行需要访问的页面数Msize:内存中可容纳的页数lack:在一次页面走向序列中用来统计缺页次数rate:缺页次数/总页数变量声明如下图所示:#defineN26!〃内存页个数intMsize;〃缺页率floatrate;缺页数intlack;队列结构页面引用序列pages[N]和内存容量Memory[m]均用简单的数据结构线

取i估荀Z宿荀,,?T7'i■;rHs.-in现ftp。耸也因理CLOCE箕法ri4^-ii'il^法,现法买现CLOCE算法Ii4取i估荀Z宿荀,,?T7'i■;rHs.-in现ftp。耸也因理CLOCE箕法ri4^-ii'il^法,现法买现CLOCE算法Ii4诜弋土Tt,.击派买现'.:、时piposKsaCLOCEKjfeJi4诙弋土TM芸性表实现,其声明如图所示:intpages"N]intmemory[5]报告正文(运行屏幕截图及源代码),.■'F:慎面旧面用强其瑟点艰显示映页聿时就丧= +:j.bt::::LI•:LM三洛无*+:J-世::::I*内.存jjpg和可咬三永左F_bCP$:土:U.t::::Jixxh*#*内.样■;i=j和回收,***¥*:引111rUu王现ERnSiKSfipdkX^kcloce箕法一.截图。_*御米女相■**味**左*内.存分和回收女**永*巾**味**_____mm—m—sssm—m——m—s且u.X“]-(Ir夏』实现EMT套买现PT7.H.:、?■理■"'J.话涌>< d*豆奉7■:U.r...JJ【选做内容】改进型CLOCK算法实现。构造一个页面引用序列,并出现Belady现象。

'5心二51;intTo_right(intindex,intpage)〃计算本页从现在到之后的需要多久{心index+1;while(pages[i]!=0&&i<20)if(pages[i]==page)「”'"'ndex;return10000;intIs_Lack()〃判断内存是否没装满页,并返回空位的indexinti;for(i=0;i<Msize;i++)"…0)}f51;intIs_exist(intpage)〃判断改page是否已在内存中,若有返回indexinti;for(i=0;i<Msize;i++)}}voidOPT() 〃最佳置换算法inti,j,k,longest_page_index;for(i=0;pages[i]!=0;i++)if(Is_Lack()!=-1)〃如果内存还没装满j=Is_Lack(); //取出memery里的空位indexif(Is_exist(pages[i])!=-1)//如果当前page已在memery中}continue;else smemery中memery[j]=pages[i];}continue;else//memery已装满,进行淘汰页面if(Is_exist(pages[i])!=-1){continue;i}ntl,m,n;longest_page_index=0;n=0;for(l=0;l<Msize;l++)〃找以后最久才会访问的pagem=To_right(i,memery[l]);if(m>n)n=m;"…峥=l;memery[longest_page_index]=pages[i];}}}ivoidLRU() 〃最近最久置换算法inti,j,k,longest_page_index;for(i=0;pages[i]!=0;i++)if(Is_Lack()!=-1)〃如果内存还没装满j=Is_Lack(); //取出memery里的空位indexif(Is_exist(pages[i])!=-1)//如果当前page已在memery中}continue;else "并不在memery中memery[j]=pages[i];}continue;else//memery已装满,进行淘汰页面if(Is_exist(pages[i])!=-1){continue;心n;longest_page_index=0;n=0;for(l=0;l<Msize;l++)//找以后最久才会访问的pagem=To_left(i,memery[l]);if(m>n)n=m;"…峥=l;memery[longest_page_index]=pages[i];.iintGet_First_Come_Page_Index(int*timer)〃找到内存中最先来的其indexinti,min=10000,index;for(i=0;i<Msize;i++)if(min>timer[i])'…;—峻voidFIFO() 〃先进先出算法inttimer[10]; //用于记录内存中各页进内存的时间inti,j,k;for(i=0;pages[i]!=0;i++)inttemp_i=Is_exist(pages[i]);if(Is_Lack()!=-1)〃如果内存还没装满j=Is_Lack(); //取出memery里的空位indexif(temp_i!=-1)〃如果当前page已在memery中timer[temp_i]=i;}continue;else smemery中memery[j]=pages[i];timer[j]=i;}else//memery已装满,缺页中断,进行淘汰页面if(tempi!=-1){…i;} con-else( intmintimerindex=GetFirstComePageIndex(timer);memery[min_timer_index]=pages[i];timer[mintimerindex]=i;)iintGet_Index_And_Update_Flag(int*flag){for(i=0;i<Msize;i++)if(flag[i]==1)—elseif(flag[i]==0)flag[i]=1;}〃如果找了一圈都没找到,flag全变为0flag[i]=0;flag[0]=1;0;voidCLOCK()intflag[10]; 〃用于记录内存中各页访问情况inti,j,k;for(i=0;pages[i]!=0;i++)inttemp_i=Is_exist(pages[i]);if(Is_Lack()!=-1)〃如果内存还没装满j=Is_Lack(); //取出memery里的空位indexif(temp_i!=-1)〃如果当前page已在memery中}continue;else *在meme"中

memery[j]=pages[i];flag。]=1;continue;else//memery已装满,缺页中断,进行淘汰页面if(temp_i!=-1)〃内存里有此页continue;else〃内存里无此页elseinttemp_index=Get_Index_And_Update_Flag(flag);memery[temp_index]=pages[i];lacknum++;intmain()intflag=0;Msize=3;//默认值printf("请输入内存驻留集:\n");scanf("%d”,&Msize);while(1)printf("\n\n*************内存分配和回收***********\n'');=\n");printf("printf("0,退出\n1.OPT算法实现'n2.LRU算法实现'n3.FIFO算法实现'n4.CLOCK算法\n5.显示=\n");缺页率对比表\n");=\n");printf("printf("请输入:\n");=\n");scanf("%d",&flag);switch(flag)case0:return0;case1:Initial();OPT();printf("OPT算法缺页率为:%f",(lacknum+Msize)*1.0/12);break;2}case2:Initial();LRU();printf("LRU算法缺页率为:%f",(lacknum+Msize)*1.0/12);break;3}case3:Initial();FIFO();printf("FIFO算法缺页率为:%f",(lacknum+Msize)*1.0/12);}break;case4:Initial();CLOCK();printf("CLOCK算法缺页率为:%f",(lacknum+Msize)*1.0/12);}break;case5:'.„.a,b,c,d;Initial();OPT();printf("OPT算法缺页率为:%f\n",(lacknum+Msize)*1.0/12);Initial();LRU();printf("LRU算法缺页率为:%f\n",(lacknum+Msize)*1.0/12);Initial();FIFO();printf("FIFO算法缺页率为:%f\n",(lacknum+Msize)*1.0/12);Initial();CLOCK();printf("CLOCK算法

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论