




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
//常最DataMax//常量//常最DataMax//常量BlockNum//用于存储要显示的数组//用于存储数组中的数据是否需要//保存数据//物理块//计数器//页面个数//最小物理块数//缺页次数//输入数据的函数//输出数据的函数//FIFO函数//Optimal函数//LRU函数实验源码:include"stdio.h"include<iostream.h>inelude<std1ib.h>defineDataMax100defineBlockNum10intDataShow[B1ockNum][DataMax];boolDataShowEnable[BIockNum][DataMax];显示intData[DataMax];intBlock[B1ockNum];intcount[BlockNum];intN;intM;intChangeTimes;voidDataInput();voidDataOutput();voidFIFO();void0ptimal();voidLRU();intmain(intargc,char*argv[])if(!find)count[j]=N;-//由于i是从0开始记,而BlockNum指的是个数,从1开始,所以i+1o»if((i+l)>M)。,〃获得要替换的块指针temp=0;。»for(j=0;j<M;j++)00{if(ternp<count[j])0{。。。。temp=count[j];。。opoint=j;//获得离的最远的指针000}060)°}。elsepoint=i;。〃替换B1ock[point]=Data[i];0//保存要显示的数据«®for(j=0;j<M;j++)°{»«DataShow[j][i]=Block[j];oo»DataShowEnable(i<M?(j<=i?j:i):j][i]=true;//设立显示数据)0}。//输出信息printf("\nOptima1=>\n");DataOutput();}//先进先出置换算法voidFIFO()(intij;oboo1find;,intpoint;inttemp;//临时变量aintm=lzn;ChangeTimes=0;ofor(j=0;j<M;j++)(。for(i=0;i<N;i++)(。DataShowEnab1e[j][i]=faIse;//初始化为false,表达没有要显示的数据°})。ofor(i=0:i<M;i++)count[i]=0;//大于等于BiockNum,表达块中没有数据,或需被替换掉//所以经这样初始化(321),每次替换>=3的块,替换后计数值置1,。//同时其它的块计数值加1,成了(132),见下面先进先出程序段。}//拟定当前页面是否在物理块中,在继续,不在置换。〃〃〃////////////////////////nn//////////////////nnnnmm/////nnm//mBlock[0]=Data[0];ofor(i=l;m<M;i++)。intf1ag=1;or(n=0;n<m;n++)°{o。if(Data[i]==BIock[n])flag=0;00Jooif(f|ag==0)continue;Block[m]=Data[i];sm++;////////////////////////////////////////////////////////〃〃〃/////〃/////////////。//对有所数据操作for(i=0;i<N;i++)//增长countafor(j=0;j<M;j++)。count[j]++;。)find=false;//表达块中有没有该数据»for(j=0;j<M;j++)(soif(B1ock[j]==Data[i])00{find=true;0)0)-//块中有该数据,判断下一个数据oif(find)continue;//块中没有该数据ChangeTimes++;//缺页次数++”/由于i是从。开始记,而M指的是个数,从1开始,所以i+1。if((i+1)>M)0{。〃获得要替换的块指针^temp=0;。for(j=0:j<M;j++)oe{。。。if(temp<count[j])…emp=count[j];point=j;//获得离的最远的指针do}oo}a)aoelsepoint=i;-//替换oBlock[point]=Data[i];0ocount[point]=0;//更新计数值0//保存要显示的数据»for(j=0;j<M;j++)°{o«DataShow[j][i]=B1ock[j];DataShowEnable[i<M?(j<=i?j:i):j][i]=true;//设立显示数据0d))//输出信息printf(u\nFIFO=>\n");。DataOutput();)//最近最久未使用置换算法voidLRU()intij;。boolfind;intpoint;。inttemp;//临时变量。intm=l,n;ChangeTimes=0;ofor(j=0;j<M;j++)(ofor(i=0;i<N;i++)oDataShowEnable[j](i]=false;//初始化为fa1se,表达没有要显示的数据§)}ofor(i=0;i<M;i++)°{o»count[i]=0;//初始化计数器)。//拟定当前页面是否在物理块中,在继续,不在置换////////////////////////////////////IIII///////////////////////////////////////////Block[0]=Data[0];for(i=1;m<M;i++)。。intflag=1;for(n=0;n<m;n++)(。。if(Data[i]==Biock[n])flag=0;)。if(flag==0)continue;s。Block[m]=Data[i];a。m++;////////////////mmm///////////////////////////////////////////////////////////对有所数据操作for(i=0;i<N;i++)°{,11增长countfor(j=0;j<M;j++)°(§。count[j]++;find=faIse;//表达块中有没有该数据«ofor(j=0;jVM;j++)。{ooif(B1ock[j]==Data[i])ocount[j]=0;/find=true;00©)00J//块中有该数据,判断下一个数据if(find)continue;。//块中没有该数据ChangeTimes++;-//由于i是从0开始记,而BlockNum指的是个数,从1开始,所以i+1ooif((i+1)>M)30{。。〃获得要替换的块指针。temp=0;。«for(j=0;j<M;j++)00{if(temp<count[j])dooo|»otemp=count1];。。。point=j;//获得离的最远的指针o0}00oJ)oeIsepoint=i;//替换s。BIock[point]=Data[i];ocount[point]=0;//保存要显示的数据。for(j=0;j<M;j++)。oDataShow[j][i]=Block[j];0。DataShowEnablefi<M?(j<=i?j:i):j](i]=true;//设立显示数据,]//输出信息printf("\nLRU=>\n");DataOutput();实验结果截图:程序运营:"E:\作业援作系统实险\finished\shiyansan2\Debug\shiyansan2.exe"输入相应数据:2.输入〉01.71022.输入〉01.71022
303数.:叵咧2坤约击序4理个面向0裔第3小面生面0最页产页2入金入1输S壬0E青青青7微软拼音简捷半:选择相应算法:"E:\作业迎作系统卖脸\finished\shiyansan2\Debug\shiyansan2.exe'输入的访问序列为:*菜单选择**1-OptimalX*2-FIFOX*3-LRU*0-EXIT*微软拼音简捷半:最佳置换算法:
oDataInput();intmenu;。while(true)菜单选择a»printf("\n*菜单选择0prjntf(”*************************************火*****************'n")*******'n");…printf("**\n");。printf("*\n");printf("**\n");oprintf("**\n");sprintf("*******'n");…printf("**\n");。printf("*\n");printf("**\n");oprintf("**\n");sprintf("1-OptimaI2-FIFO3-LRU4-返回上一级0-EXIT*******'n");…printf("**\n");。printf("*\n");printf("**\n");oprintf("**\n");sprintf("1-OptimaI2-FIFO3-LRU4-返回上一级0-EXIT************\n");。。scanf("%d",&menu);。。switch(menu)—case1:Optima1();。。。。break;"E:\作业迎作系统卖脸\finished\shiyansan2\Debug\shiyansan2.exe'ptinalptinal012201ptinal012201缺页率:30ptinal012201缺页率:30302036IX4243020312201菜单选择菜单选择1-Optimal2-FIFO3-LRU0-EXIT微软拼音简捷半:先进先出算法:"E:\作业援作系统实险菜单选择1-Optimal2-FIFO3-LRU0-EXIT微软拼音简捷半:先进先出算法:"E:\作业援作系统实险\finished\shiyansan2\Debug\shiyansan2.exe"FIFO=>7012201FIFO=>7012201缺必达数::
缺页率:603231FIFO=>7012201缺必达数::
缺页率:60323112023034231701777100221菜单选择1-Optimal2-FIFO3-LRU0-EXIT微软拼音简捷半:最近最久未使用算法:
IVIVIVIV。»case2:。FIFO();break;acase3:od&oLRU();break;。。case0:ooexit(O);break;case4:。system(Mcis");。。。DataInput();so。break;00}!=0&&menu!=4)!=0&&menu!=4)!=0&&menu!=4)if(menu!=1&&menu!=2&&menu!=3&&menu(!=0&&menu!=4)osystem("cis");o。。printf("\n请输入0-4之间的整数!\n");,continue;00J)return0;)voidDataInput()inti,choice;oprintf("请输入最小物理块数:");scanf("%d",&M);。〃输入最小物理块数大于数据个数owhiIe(M>BlockNum)oprintf("物理块数超过预定值,请重新输入:");^scanf("%d",&M);)。printf("请输入页面的个数:”);scanf("%d",&N);。//输入页面的个数大于数据个数while(N>DataMax)-printf("页面个数超过预定值,请重新输入:");oseanf("%d",&N);)。pi'intf("请选择产生页面访问序列的方式(L随机2.输入):”);seanf("%dchoice);switch(choice)(case1:0//产生随机访问序列for(i=0;i<N;i++)oData[i]=(int)(((float)rand()/32767)♦10);//随机数大小在0—9之间00)。。system(McIs11);-//显示随机产生的访问序列printf("\n随机产生的访问序列为:");oforfi=0;i<N;i++)36{o®printf("%d",Data[i]);30}printf("\n");。break;case2:-//输入访问序列。printf("请输入页面访问序列:\n");for(i=0;i<N;i++)®scanf("%d",&Data[i]);。。system("cls");°°//显不输入的访问序列printf(”\n输入的访问序列为:“);ofor(i=0;i<N;i++)001oprintf("%d"zData[i]);printfCXn11);default:awhile(choice!=1&&choice!=2)°{。printf(”请输入1或2选择相应方式巧;。。scanf("%d",&choice);°}sbreak;)}voidDataOutput()(,inti,j;//对所有数据操作ofor(i=0;i<N;i++)°{叩rintf("%d",Data[i]);)oprintf("\n");ofor(j=0;j<M;j++)(。//对所有数据操作«for(i=0;i<N;i++)。if(DataShowEnable[j][i])。。printf("%d",DataShow[j][i]):。e1se。printf("");)printf("\n*');)printf(H缺页次数:%d\n",ChangeTimes);printf("缺页率:%d%%\n",ChangeTimes*100/N);}//最佳置换算法voidOptimal()(。inti,j,k;sboolfind;ointpoint;°inttemp;〃临时变量,比较离的最远的时候用«intm=l,n;。ChangeTimes=0;for(j=0;j<M;j++)(sfor(i=0;i<N;i++)°DataShowEnab1e[j][i]=false;/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 分包管理办法额度
- 分类运输管理办法
- 切块资金管理办法
- 创业机会管理办法
- 初中名师管理办法
- 别墅建设管理办法
- 制定管理办法规避
- 化工产业管理办法
- 内窥镜技术推动下的医学人才培养模式变革
- 技术推动下如何提升员工在线学习体验
- 《反洗钱基础知识》课件
- 培训餐饮住宿服务投标方案(技术标)
- 2023-2024学年江苏省泰州市联盟五校高二上学期期中考试 数学试卷(含答案详解)
- 中俄公司治理模式对比研究
- 工程量清单及招标控制价编制、审核入库类服务方案
- 工程量审核申报表
- 公共厕所新建工程施工组织设计投标方案
- 医疗设备采购计划申请论证表(空)
- 水土保持防治工真题模拟汇编(共508题)
- WD-1500机组故障处理指导手册
- GB/T 26081-2022排水工程用球墨铸铁管、管件和附件
评论
0/150
提交评论