浙江理工大学操作系统实验三页面置换算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作系统实验报告
班级:计算机科学与技术三班姓名:李生启学号:2013329620077
实验三:页面置换算法
一、实验目的
1、熟悉内存分页管理策略。
2、编写OPT、FIFO、LRU,LFU四种置换算法并模拟实现。
3、锻炼知识的运用能力和实践能力。
二、实验内容
设计主界面,输入一串系列模拟页面请求,实现以下算法:
1) 最佳置换算法(OPT):将以后永不使用的或许是在最长(未来)时间内不再被访问的页面换出。
2) 先进先出算法(FIFO):淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。
3) 最近最久未使用算法(LRU):淘汰最近最久未被使用的页面。
4) 最不经常使用算法(LFU)
三、代码及运行结果分析
1.代码:(采用C++,环境:VS2010)
#include
#include
#include
#include
using namespace std;
void OPT(int count)
{
int all[50];
int bracket[3];
int bll[50]={0};
ifstream fin("abc.txt");
if( fin.is_open() )
{
for(int i=0;i { fin>>all[i]; } fin.close(); } bracket[0]=all[0]; bracket[1]=all[1]; bracket[2]=all[2]; for(int i=0;i { if(i<3) { if(i==0) { cout<<"当前序列:"< cout< } if(i==1) { cout<<"当前序列:"< cout< } if(i==2) { cout<<"当前序列:"< cout< } } if(i>=3) { int a_num=count+1; int b_num=count+1; int c_num=count+1; int qi=0; for(int x=0;x<3;x++) { if(bracket[x]==all[i]) { cout<<"当前序列:"< cout< qi=6; break; } } if(qi==0) { for(int e=i+1;e if(bracket[0]==all[e]) { a_num=e;break; } } for(int e=i+1;e { if(bracket[1]==all[e]) { b_num=e;break; } } for(int e=i+1;e { if(bracket[2]==all[e]) { c_num=e;break; } } } if((a_num>=b_num)&&(a_num>=c_num))bracket[0]=all[i]; else if((b_num>=a_num)&&(b_num>=c_num))bracket[1]=all[i]; else if((c_num>=b_num)&&(c_num>=a_num))bracket[2]=all[i]; cout<<"当前序列:"< cout< } } } void FIFO(int count) { int bll[50]={0}; int all[50]; int top=0; ifstream fin("abc.txt"); if( fin.is_open() ) { for(int i=0;i { fin>>all[i]; } fin.close(); } for(int i=0;i { if(top<3) { bll[top]=all[i]; top++; if(top==1) { cout<<"当前序列:"< cout< } if(top==2) { cout<<"当前序列:"< cout< }