先进先出FIFO页面置换算法2.docx

上传人:b****2 文档编号:2231816 上传时间:2023-05-02 格式:DOCX 页数:8 大小:47.62KB
下载 相关 举报
先进先出FIFO页面置换算法2.docx_第1页
第1页 / 共8页
先进先出FIFO页面置换算法2.docx_第2页
第2页 / 共8页
先进先出FIFO页面置换算法2.docx_第3页
第3页 / 共8页
先进先出FIFO页面置换算法2.docx_第4页
第4页 / 共8页
先进先出FIFO页面置换算法2.docx_第5页
第5页 / 共8页
先进先出FIFO页面置换算法2.docx_第6页
第6页 / 共8页
先进先出FIFO页面置换算法2.docx_第7页
第7页 / 共8页
先进先出FIFO页面置换算法2.docx_第8页
第8页 / 共8页
亲,该文档总共8页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

先进先出FIFO页面置换算法2.docx

《先进先出FIFO页面置换算法2.docx》由会员分享,可在线阅读,更多相关《先进先出FIFO页面置换算法2.docx(8页珍藏版)》请在冰点文库上搜索。

先进先出FIFO页面置换算法2.docx

先进先出FIFO页面置换算法2

《操作系统》

课外实践报告

 

项目名称:

页面置换算法

所在班级:

姓名:

学号:

组长:

小组成员:

指导教师:

支丽平

成绩评定:

 

页面置换算法中的先进先出算法

 

一实验目的

了解最佳页面置换算法与先进先出FIFO页面置换算法,并掌握其基本原理

二实验目标

用C++模拟最佳页面置换算法与先进先出FIFO页面置换算法

三实验步骤

第一步,输入系统为进程分配的物理块数(m<=10)

第二步,输入总页面数(n<=30)

第三步,输入页面号引用串

第四步,系统自动给出演示数据

第五步,分析数据

第六步,重复一到五步骤四技术难点及解决方案技术难点:

如何找到最久页面解决方案:

建立一个时间数组,做标记

五关键数据和算法流程

 

代码如下:

#include"iostream"

#include"iomanip"//使用setw()时用到的头文件

#include"stdio.h"

#include"stdlib.h"

#include"conio.h"//使用getchar()时用到的头文件

usingnamespacestd;

#defineMax30//某进程调入内存中的最大页面数

#defineSize10//系统为某进程分配的最大物理块数

voidInit(intBlock[],intm)//初始化物理块

{inti;

for(i=0;i

{

Block[i]=-1;

}

}

voidcreat(intPage[],intn)//输入页面串引用号

{inti;

for(i=0;i

{

cin>>Page[i];

}

}

voidFIFO(intPage[],intBlock[],intn,intm)

{//max_stay:

比较当前内存中页面驻留的最久时间,count:

统计页面置换次数

//get:

某物理块是否等待驻入新页面(-1:

否)

//flag:

标记当前序号页面是否已驻入内存(-1:

否)

//block_num:

驻留内存时间最长的页面所在的物理块序号

//time[]标记对应序号的物理块中页面驻留时间

inti,j,max_stay=0,count=0;

intget=-1,flag=-1,block_num=-1;

inttime[Size];

for(i=0;i

{time[i]=0;

}

for(i=0;i

{for(j=0;j

{if(Block[j]==-1)

{

get=j;//物理块j即将(/等待)驻入新页面

break;

}

}

for(j=0;j

{if(Block[j]==Page[i])//物理块j中页面与当前期望调入内存的页面相同

{

flag=j;

break;

}

}

for(j=0;j

{

if(time[j]>max_stay)

{

max_stay=time[j];

block_num=j;//block_num标记当前序号物理块中页面驻留时间最久

}

}

if(flag==-1)//不存在相同页面

{if(get!

=-1)//物理块即将(/等待)驻入新页面

{

Block[get]=Page[i];//存入页面

time[get]=0;//当前物理块重新计时

for(j=0;j<=get;j++)//已驻入页面的驻留时间加1

{

time[j]++;

}

get=-1;

}

else//页面调度置换,序号block_num的物理块是驻留时间最久的

{

Block[block_num]=Page[i];

time[block_num]=0;

for(j=0;j

{

time[j]++;

}

block_num=-1;

max_stay=0;

count++;

}

}

else//待调入页面与序号flag的物理块中页面相同

{

for(j=0;j

{

time[j]++;

}

flag=-1;

}

for(j=0;j

{

cout<

}

cout<

}

if(n>m)

count=count+m;

cout<<"缺页中断次数为:

"<

}

voidmain()

{intn,m,Page[Max],Block[Size];

cout<<"*******先进先出FIFO页面置换算法*******"<

cout<<"--------------------------------------"<

cout<<"*******(默认:

-1表示物理块空闲)*******"<

cout<

";

while

(1)

{cin>>m;

if(m>Size||m<1)

{

cout<<"警告:

输入的数据错误!

"<

cout<<"请重新输入物理块数:

";

}

elsebreak;

}

Init(Block,m);

cout<<"请输入总页面数(n<=30):

";

cin>>n;

cout<<"\n请输入页面号引用串:

";

creat(Page,n);

cout<<"FIFO算法过程如下:

"<

FIFO(Page,Block,n,m);

getchar();//直接执行exe文件时做停留查看结果之用

getchar();

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2