1、页面置换算法模拟OPTFIFO及LRU算法操作系统实验报告页面置换算法模拟 OFT、FIFO 和 LRU算法班级: 2013 级软件工程 1 班学号:XXX姓名:萧氏一郎适用标准文案数据构造说明:Memery10 物理块中的页码Page100 页面号引用串Temp10010 协助数组Void print(unsigned int t) 协助函数Viod FIFO ()先进先出页面置换算法Viod LRU ()近来最久未使用置换换算法Viod OPT ()最正确置换算法流程图:开始载入序列号,从第 0 个获得页号将页号放入物理地点中编号NO引用编号大于物理块数Yes号存在物理块中YesNO依据选
2、择的置换算法达成NO页号序列载完?Yes结束出色文档适用标准文案源代码:#include #include /* 全局变量 */int mSIZE; /* 物理块数 */int pSIZE; /* 页面号引用串个数 */static int memery10=0; /* 物理块中的页号 */static int page100=0; /* 页面号引用串 */static int temp10010=0; /* 协助数组 */* 置换算法函数 */void FIFO();void LRU();void OPT();/* 协助函数 */void print(unsigned int t);void
3、 designBy();void download();void mDelay(unsigned int Delay);/* 主函数 */void main()int i,k,code;出色文档适用标准文案printf( 请输入物理块的个数 (M=10):);scanf(%d,&mSIZE);printf( 请输入页面号引用串的个数 (P=100) :);scanf(%d,&pSIZE);puts( 请挨次输入页面号引用串 ( 连续输入,无需分开 ) :);for(i=0;ipSIZE;i+)scanf(%1d,&pagei);download();doputs( 输入的页面号引用串为: );
4、for(k=0;k=(pSIZE-1)/20;k+)for(i=20*k;(ipSIZE)&(i);getch();while (code!=4);getch();/* 载入数据 */void download()printf(nFinish.n 载入成功 !);/* 设置延缓 */void mDelay(unsigned int Delay)unsigned int i;for(;Delay0;Delay-)for(i=0;i124;i+)出色文档适用标准文案printf( b);/* 显示设计者信息 */void print(unsigned int t)int i,j,k,l;int f
5、lag;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(%dn,pagei);elseprintf(%d ,pagei);for(j=0;jmSIZE;j+)for(i=20*k;(imSIZE+20*k)&(i=j)printf( |%d|,tempij);elseprintf( | |);for(i=mSIZE+20*k;(ipSIZE)&(i20*(k+1);i+)for(flag=0,l=0;lmSIZE;l+)if(tempil=
6、tempi-1l)flag+;if(flag=mSIZE)/* 页面在物理块中 */printf( );elseprintf( |%d|,tempij);/* 每行显示 20 个*/if(i%20=0)continue;printf(n);出色文档适用标准文案printf(-n);printf( 缺页次数: %dtt,t+mSIZE);printf( 缺页率: %d/%dn,t+mSIZE,pSIZE);printf( 置换次数: %dtt,t);printf( 接见命中率:%d%n,(pSIZE-(t+mSIZE)*100/pSIZE);printf(-n);/* 计算过程延缓 */void
7、 compute()int i;printf( 正在进行有关计算,请稍候 );for(i=0;i+30;printf(b);for(i=0;i+30;printf( );for(i=0;i+30;printf(b);/* 先进先出页面置换算法 */void FIFO()int memery10=0;int time10=0; /* 记录进入物理块的时间 */int i,j,k,m;出色文档适用标准文案int max=0; /* 记录换出页 */int count=0; /* 记录置换次数 */* 前 mSIZE个数直接放入 */for(i=0;imSIZE;i+)memeryi=pagei;t
8、imei=i;for(j=0;jmSIZE;j+)tempij=memeryj;for(i=mSIZE;ipSIZE;i+)/* 判断新页面号能否在物理块中 */for(j=0,k=0;jmSIZE;j+)if(memeryj!=pagei)k+;if(k=mSIZE) /* 假如不在物理块中 */count+;/* 计算换出页 */出色文档适用标准文案max=time0time1?0:1;for(m=2;mmSIZE;m+)if(timemtimemax)max=m;memerymax=pagei;timemax=i; /* 记录该页进入物理块的时间 */for(j=0;jmSIZE;j+)
9、tempij=memeryj;elsefor(j=0;jmSIZE;j+)tempij=memeryj;compute();print(count);/* 近来最久未使用置换算法 */void LRU()int memery10=0;出色文档适用标准文案int flag10=0; /* 记录页面的接见时间 */int i,j,k,m;int max=0; /* 记录换出页 */int count=0; /* 记录置换次数 */* 前 mSIZE个数直接放入 */for(i=0;imSIZE;i+)memeryi=pagei;flagi=i;for(j=0;jmSIZE;j+)tempij=me
10、meryj;for(i=mSIZE;ipSIZE;i+)/* 判断新页面号能否在物理块中 */for(j=0,k=0;jmSIZE;j+)if(memeryj!=pagei)k+;elseflagj=i; /* 刷新该页的接见时间 */出色文档适用标准文案if(k=mSIZE) /* 假如不在物理块中 */count+;/* 计算换出页 */max=flag0flag1?0:1;for(m=2;mmSIZE;m+)if(flagmflagmax)max=m;memerymax=pagei;flagmax=i; /* 记录该页的接见时间 */for(j=0;jmSIZE;j+)tempij=me
11、meryj;elsefor(j=0;jmSIZE;j+)tempij=memeryj;compute();print(count);出色文档适用标准文案/* 最正确置换算法 */void OPT()int memery10=0;int next10=0; /* 记录下一次接见时间 */int i,j,k,l,m;int max; /* 记录换出页 */int count=0; /* 记录置换次数 */* 前 mSIZE个数直接放入 */for(i=0;imSIZE;i+)memeryi=pagei;for(j=0;jmSIZE;j+)tempij=memeryj;for(i=mSIZE;ipS
12、IZE;i+)/* 判断新页面号能否在物理块中 */for(j=0,k=0;jmSIZE;j+)if(memeryj!=pagei)k+;出色文档适用标准文案if(k=mSIZE) /* 假如不在物理块中 */count+;/* 获得物理快中各页下一次接见时间 */for(m=0;mmSIZE;m+)for(l=i+1;l=next1?0:1;for(m=2;mnextmax)max=m;/* 下一次接见时间都为 pSIZE, 则置换物理块中第一个 */memerymax=pagei;for(j=0;jmSIZE;j+)tempij=memeryj;出色文档适用标准文案else for(j=0;jmSIZE;j+)tempij=memeryj;compute();print(count);出色文档
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1