先进先出FIFO页面置换算法2Word文件下载.docx

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

先进先出FIFO页面置换算法2Word文件下载.docx

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

先进先出FIFO页面置换算法2Word文件下载.docx

成绩评定:

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

一实验目的

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

二实验目标

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

三实验步骤

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

=10)

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

=30)

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

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

第五步,分析数据

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

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

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

五关键数据和算法流程

代码如下:

#include"

iostream"

iomanip"

//使用setw()时用到的头文件

stdio.h"

stdlib.h"

conio.h"

//使用getchar()时用到的头文件

usingnamespacestd;

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

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

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

{inti;

for(i=0;

i<

m;

i++)

{

Block[i]=-1;

}

}

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

n;

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];

i++)//初始化time[]

{time[i]=0;

{for(j=0;

j<

j++)//有空闲物理块时,页面直接驻入内存空闲块

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

{

get=j;

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

break;

}

}

for(j=0;

j++)//查找序号相同的页面

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

flag=j;

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;

=get;

j++)//已驻入页面的驻留时间加1

{

time[j]++;

}

get=-1;

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

Block[block_num]=Page[i];

time[block_num]=0;

Size;

j++)

block_num=-1;

max_stay=0;

count++;

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

for(j=0;

time[j]++;

flag=-1;

j++)//输出物理块中的页面驻入情况

cout<

<

setw(3)<

Block[j];

cout<

endl;

if(n>

m)

count=count+m;

cout<

"

缺页中断次数为:

count<

voidmain()

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

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

--------------------------------------"

*******(默认:

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

endl<

请输入系统为进程分配的物理块数(m<

=10):

;

while

(1)

{cin>

if(m>

Size||m<

1)

警告:

输入的数据错误!

请重新输入物理块数:

elsebreak;

Init(Block,m);

请输入总页面数(n<

=30):

cin>

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

creat(Page,n);

FIFO算法过程如下:

FIFO(Page,Block,n,m);

getchar();

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

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

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

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

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