请求页式存储管理中常用页面置换算法资料

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

计算机操作系统实验报告课程名称计算机操作系统实验项目名称请求页式存储管理中常用页面置换算法模拟学号20111214034班级计1103姓名韩瑶专业计算机科学与技术实验地点12J-661实验室济南大学信息科学与技术学院2013年xx月xx日一、实验概述1.实验名称请求页式存储管理中常用页面置换算法管理2.实验目的(1)了解内存分页管理策略(2)掌握调页策略(3)掌握一般常用的调度算法(4)学会各种存储分配算法的实现方法。(5)了解页面大小和内存实际容量对命中率的影响3.实验内容(1)采用页式分配存储方案,通过分别计算不同算法的命中率来比较算法的优劣,同时也考虑页面大小及内存实际容量对命中率的影响;(2)实现OPT算法(最优置换算法)、LRU算法(LeastRecently)、FIFO算法(FirstINFirstOut)的模拟;(3)使用某种编程语言模拟页面置换算法。二、实验环境C语言三、实验过程1.设计思路和流程图选择置换算法,先输入所有页面号,为系统分配物理块,依次进行置换2.算法实现(1)OPT基本思想:将页号放入物理块中,编号加1引用串编号大于物理块数?载入页号序列,从第0个得到页号开始页号在物理块中?根据选择的置换算法完成置换页号序列载完?结束是否是是是是是用一维数组page[pSIZE]存储页面号序列,memery[mSIZE]是存储装入物理块中的页面。数组next[mSIZE]记录物理块中对应页面的最后访问时间。每当发生缺页时,就从物理块中找出最后访问时间最大的页面,调出该页,换入所缺的页面。(2)FIFO基本思想:是用队列存储内存中的页面,队列的特点是先进先出,与该算法是一致的,所以每当发生缺页时,就从队头删除一页,而从队尾加入缺页。或者借助辅助数组time[mSIZE]记录物理块中对应页面的进入时间,每次需要置换时换出进入时间最小的页面。(3)LRU基本思想:是用一维数组page[pSIZE]存储页面号序列,memery[mSIZE]是存储装入物理块中的页面。数组flag[10]标记页面的访问时间。每当使用页面时,刷新访问时间。发生缺页时,就从物理块中页面标记最小的一页,调出该页,换入所缺的页面。3.源程序并附上注释#includestdio.h#includestdlib.h/*全局变量*/intmSIZE;/*物理块数*/intpSIZE;/*页面号引用串个数*/staticintmemery[10]={0};/*物理块中的页号*/staticintpage[100]={0};/*页面号引用串*/staticinttemp[100][10]={0};/*辅助数组*//*置换算法函数*/voidFIFO();voidLRU();voidOPT();/*辅助函数*/voidprint(unsignedintt);voiddesignBy();voiddownload();voidmDelay(unsignedintDelay);/*主函数*/voidmain(){inti,k,code;system(color0A);designBy();printf(┃请按任意键进行初始化操作...┃\n);printf(┗━━━━━━━━━━━━━━━━━━━━━━━━━┛\n);printf();getch();system(cls);system(color0B);printf(请输入物理块的个数(M=10):);scanf(%d,&mSIZE);printf(请输入页面号引用串的个数(P=100):);scanf(%d,&pSIZE);puts(请依次输入页面号引用串(连续输入,无需隔开):);for(i=0;ipSIZE;i++)scanf(%1d,&page[i]);download();system(cls);system(color0E);do{puts(输入的页面号引用串为:);for(k=0;k=(pSIZE-1)/20;k++){for(i=20*k;(ipSIZE)&&(i20*(k+1));i++){if(((i+1)%20==0)||(((i+1)%20)&&(i==pSIZE-1)))printf(%d\n,page[i]);elseprintf(%d,page[i]);}}printf(***********************\n);printf(*请选择页面置换算法:\t\t\t*\n);printf(*-----------------------------------------*\n);printf(*1.先进先出(FIFO)2.最近最久未使用(LRU)*\n);printf(*3.最佳(OPT)4.退出*\n);printf(***********************\n);printf(请选择操作:[]\b\b);scanf(%d,&code);switch(code){case1:FIFO();break;case2:LRU();break;case3:OPT();break;case4:system(cls);system(color0A);designBy();/*显示设计者信息后退出*/printf(┃谢谢使用页面置换算法演示器!正版授权㊣┃\n);printf(┗━━━━━━━━━━━━━━━━━━━━━━━━━┛\n);exit(0);default:printf(输入错误,请重新输入:);}printf(按任意键重新选择置换算法:);getch();system(cls);}while(code!=4);getch();}/*载入数据*/voiddownload(){inti;system(color0D);printf(╔════════════╗\n);printf(║正在载入数据,请稍候!!!║\n);printf(╚════════════╝\n);printf(Loading...\n);printf(O);for(i=0;i51;i++)printf(\b);for(i=0;i50;i++){mDelay((pSIZE+mSIZE)/2);printf();}printf(\nFinish.\n载入成功,按任意键进入置换算法选择界面:);getch();}/*设置延迟*/voidmDelay(unsignedintDelay){unsignedinti;for(;Delay0;Delay--){for(i=0;i124;i++){printf(\b);}}}/*显示设计者信息*/voiddesignBy(){printf(┏━━━━━━━━━━━━━━━━━━━━━━━━━┓\n);printf(┃课题三:页面置换算法┃\n);printf(┃学号:20111214034┃\n);printf(┃姓名:韩瑶┃\n);printf(┣━━━━━━━━━━━━━━━━━━━━━━━━━┫\n);}voidprint(unsignedintt){inti,j,k,l;intflag;for(k=0;k=(pSIZE-1)/20;k++){for(i=20*k;(ipSIZE)&&(i20*(k+1));i++){if(((i+1)%20==0)||(((i+1)%20)&&(i==pSIZE-1)))printf(%d\n,page[i]);elseprintf(%d,page[i]);}for(j=0;jmSIZE;j++){for(i=20*k;(imSIZE+20*k)&&(ipSIZE);i++){if(i=j)printf(|%d|,temp[i][j]);elseprintf(||);}for(i=mSIZE+20*k;(ipSIZE)&&(i20*(k+1));i++){for(flag=0,l=0;lmSIZE;l++)if(temp[i][l]==temp[i-1][l])flag++;if(flag==mSIZE)/*页面在物理块中*/printf();elseprintf(|%d|,temp[i][j]);}/*每行显示20个*/if(i%20==0)continue;printf(\n);}}printf(----------------------------------------\n);printf(缺页次数:%d\t\t,t+mSIZE);printf(缺页率:%d/%d\n,t+mSIZE,pSIZE);printf(置换次数:%d\t\t,t);printf(访问命中率:%d%%\n,(pSIZE-(t+mSIZE))*100/pSIZE);printf(----------------------------------------\n);}/*计算过程延迟*/voidcompute(){inti;printf(正在进行相关计算,请稍候);for(i=1;i20;i++){mDelay(15);if(i%4==0)printf(\b\b\b\b\b\b\b\b\b\b\b\b);elseprintf(Θ);}for(i=0;i++30;printf(\b));for(i=0;i++30;printf());for(i=0;i++30;printf(\b));}/*先进先出页面置换算法*/voidFIFO(){intmemery[10]={0};inttime[10]={0};/*记录进入物理块的时间*/inti,j,k,m;intmax=0;/*记录换出页*/intcount=0;/*记录置换次数*//*前mSIZE个数直接放入*/for(i=0;imSIZE;i++){memery[i]=page[i];time[i]=i;for(j=0;jmSIZE;j++)temp[i][j]=memery[j];}for(i=mSIZE;ipSIZE;i++){/*判断新页面号是否在物理块中*/for(j=0,k=0;jmSIZE;j++){if(memery[j]!=page[i])k++;}if(k==mSIZE)/*如果不在物理块中*/{count++;/*计算换出页*/max=time[0]time[1]?0:1;for(m=2;mmSIZE;m++)if(time[m]time[max])max=m;memery[max]=page[i];time[max]=i;/*记录该页进入物理块的时间*/for(j=0;jmSIZE;j++)temp[i][j]=memery[j];}else{for(j=0;jmSIZE;j++)temp[i][j]=memery[j];}}compute();print(count);}/*最近最久未使用置换算法*/voidLRU(){intmemery[10]={0};intflag[10]={0};/*记录页面的访问时间*/inti,j,k,m;intmax=0;/*记录换出页*/intcount=0;/*记录置换次数*//*前mSIZE个数直接放入*/for(i=0;imSIZE;i++){memery[i]=page[i];flag[i]=i;for(j=0;jmSIZE;j++)temp[i][j]=memery[j];}for(i=mSIZE;ipSIZE;i++){/*判断新页面号是否在物理块中*/for(j=0,k=0;jmSIZE;j++){if(memery[j]!=page[i])k++;elseflag[j]=i;/*刷新该页的访问时间*/}if(k==mSIZE)/*如果不在物理块中*/{count++;/*计算换出页*/max=flag[0]flag[1]?0:1;for(m=2;mmSIZE;m++)if(flag[m]flag[max])max=m;memery[max]=page[i];flag[max]=i;/*记录该页的访

1 / 14
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功