1、浙江理工大学操作系统实验三页面置换算法详解操作系统实验报告班级:计算机科学与技术三班 姓名:李生启 学号:2013329620077实验三:页面置换算法一、实验目的1、熟悉内存分页管理策略。 2、编写OPT、FIFO、LRU,LFU四种置换算法并模拟实现。3、锻炼知识的运用能力和实践能力。二、实验内容设计主界面,输入一串系列模拟页面请求,实现以下算法: 1) 最佳置换算法(OPT):将以后永不使用的或许是在最长(未来)时间内不再 被访问的页面换出。 2) 先进先出算法(FIFO):淘汰最先进入内存的页面,即选择在内存中驻留 时间最久的页面予以淘汰。 3) 最近最久未使用算法(LRU):淘汰最近
2、最久未被使用的页面。 4) 最不经常使用算法(LFU)三、代码及运行结果分析1.代码:(采用C+,环境:VS2010)#include#include#include #includeusing namespace std;void OPT(int count) int all50; int bracket3; int bll50=0; ifstream fin(abc.txt); if( fin.is_open() ) for(int i=0;ialli; fin.close(); bracket0=all0; bracket1=all1; bracket2=all2; for(int i=
3、0;icount;i+) if(i3) if(i=0) cout当前序列:endl; coutbracket0endl; if(i=1) cout当前序列:endl; coutbracket0 bracket1endl; if(i=2) cout当前序列:endl; coutbracket0 bracket1 bracket2=3) int a_num=count+1; int b_num=count+1; int c_num=count+1; int qi=0; for(int x=0;x3;x+) if(bracketx=alli) cout当前序列:endl; coutbracket0
4、bracket1 bracket2endl; qi=6; break; if(qi=0) for(int e=i+1;ecount;e+) if(bracket0=alle) a_num=e;break; for(int e=i+1;ecount;e+) if(bracket1=alle) b_num=e;break; for(int e=i+1;e=b_num)&(a_num=c_num)bracket0=alli; else if(b_num=a_num)&(b_num=c_num)bracket1=alli; else if(c_num=b_num)&(c_num=a_num)brack
5、et2=alli; cout当前序列:endl; coutbracket0 bracket1 bracket2endl; void FIFO(int count) int bll50=0; int all50; int top=0; ifstream fin(abc.txt); if( fin.is_open() ) for(int i=0;ialli; fin.close(); for(int i=0;icount;i+) if(top3) blltop=alli; top+; if(top=1) cout当前序列:endl; coutblltop-1endl; if(top=2) cout
6、当前序列:endl; coutblltop-1 blltop-2endl; if(top=3) cout当前序列:endl; coutblltop-1 blltop-2 blltop-3=3) if(alli!=blltop-1)&(alli!=blltop-2)&(alli!=blltop-3) blltop=alli; top+; cout当前序列:endl; coutblltop-1 blltop-2 blltop-3endl; void LRU(int count) int bll50=0; int all50; int top=0; ifstream fin(abc.txt); if
7、( fin.is_open() ) for(int i=0;ialli; fin.close(); for(int i=0;icount;i+) if(top3) blltop=alli; top+; if(top=1) cout当前序列:endl; coutblltop-1endl; if(top=2) cout当前序列:endl; coutblltop-1 blltop-2endl; if(top=3) cout当前序列:endl; coutblltop-1 blltop-2 blltop-3=3) int end3; int point=0; blltop=alli; top+; end
8、0=blltop-1; point+; for(int i=top-2;i=0;i-) if(point=3) cout当前序列:endl; coutend0 end1 end2endl; point=0; break; else if(point=1)&(end0!=blli) endpoint=blli; point+; else if(point=2)&(end0!=blli)&(end1!=blli) endpoint=blli; point+; void LFU(int count) int all50; int bll50=0; int top=0; int bracket3; i
9、fstream fin(abc.txt); if( fin.is_open() ) for(int i=0;ialli; fin.close(); bracket0=all0; bracket1=all1; bracket2=all2; for(int i=0;icount;i+) int a_num=0; int b_num=0; int c_num=0; int qi=0; if(i3) if(i=0) cout当前序列:endl; coutbracket0endl; if(i=1) cout当前序列:endl; coutbracket0 bracket1endl; if(i=2) cou
10、t当前序列:endl; coutbracket0 bracket1 bracket2=3) for(int x=0;x3;x+) if(bracketx=alli) cout当前序列:endl; coutbracket0 bracket1 bracket2endl; qi=6; break; if(qi=0) for(int e=0;e=i;e+) if(bracket0=alle) a_num+; for(int e=0;e=i;e+) if(bracket1=alle) b_num+; for(int e=0;e=i;e+) if(bracket2=alle) c_num+; if(a_n
11、um=b_num)&(a_num=c_num) bracket0=alli; else if(b_num=a_num)&(b_num=c_num) bracket1=alli; else if(c_num=b_num)&(c_num=a_num) bracket2=alli; cout当前序列:endl; coutbracket0 bracket1 bracket2endl; int main() int a50; int count=0; cout请输入页面请求序列的个数:count; ofstream out(abc.txt); cout请输入页面请求序列:endl; if(out.is_
12、open() for(int i=0;iai; out ai endl; out.close( ); while(true) int choose; cout-endl; cout最佳置换算法(OPT)-1endl; cout先进先出算法(FIFO)-2endl; cout最近最久未使用算法(LRU)-3endl; cout最不经常使用算法(LFU)-4endl; cout退出系统-5endl; cout-endl; cout输入要执行的操作;choose; switch(choose) case 1:OPT(count);break; case 2:FIFO(count);break; ca
13、se 3:LRU(count);break; case 4:LFU(count);break; default :break; 2.运行结果及分析:1.第一张图为输入的主界面,本程序可以选择输入任意长度页面和任意的页面请求序列,如上选择的是10个页面,页面请求序列如上,同时选择菜单如上。2.第二张截图如上,为选择菜单中的第一项操作-最佳置换算法(OPT),按1运行,运行结果如图。3.第三张截图如上,为选择菜单中的第二项操作-先进先出算法(FIFO),按2运行,运行结果如图。4.第四张截图如上,为选择菜单中的第三项操作-最近最久未使用算法(LRU),按3运行,运行结果如图。5.第五张截图如上,为
14、选择菜单中的第四项操作-最不经常使用算法(LFU),按4运行,运行结果如图。6.第六张截图如上,为选择菜单中的第五项操作-退出系统,按5退出,运行结果如图。四、实验心得此次实验我很认真并及时的完成任务,在刚做这四个算法时,我开始只会做出两个算法LRU和FIFO,之后的两个算法通过多次理解定义和看资料,终于明白实现算法的方法,此次实验我使用的是C+语言,我不仅熟悉内存分页管理策略和编写OPT、FIFO、LRU,LFU四种置换算法并模拟实现而且锻炼知识的运用能力和实践能力,并且熟练了大二上学期学习的C+语言,在实验途中遇到很多的困难,但所幸我静下心来一一克服,最终成功,其实编程就是在理论的基础上不断积累编程经验才会更加熟练和理解深入。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1