1、先进先出FIFO页面置换算法2 操作系统课外实践报告项 目 名 称: 页面置换算法 所 在 班 级: 姓名: 学号: 组长: 小 组 成 员: 指 导 教 师: 支丽平 成 绩 评 定: 页面置换算法中的先进先出算法一 实验目的 了解最佳页面置换算法与先进先出FIFO页面置换算法,并掌握其基本原理 二 实验目标 用C+模拟最佳页面置换算法与先进先出FIFO页面置 换算法 三 实验步骤 第一步,输入系统为进程分配的物理块数(m=10) 第二步,输入总页面数(n=30) 第三步,输入页面号引用串 第四步,系统自动给出演示数据 第五步,分析数据 第六步,重复一到五步骤 四 技术难点及解决方案 技术难
2、点:如何找到最久页面 解决方案:建立一个时间数组,做标记 五 关键数据和算法流程 代码如下:#include iostream#include iomanip /使用setw()时用到的头文件#include stdio.h#include stdlib.h#include conio.h /使用getchar()时用到的头文件using namespace std;#define Max 30 /某进程调入内存中的最大页面数#define Size 10 /系统为某进程分配的最大物理块数void Init(int Block,int m) /初始化物理块 int i; for(i=0;im;
3、i+) Blocki=-1; void creat(int Page,int n) /输入页面串引用号 int i; for(i=0;iPagei; void FIFO(int Page,int Block,int n,int m)/max_stay:比较当前内存中页面驻留的最久时间,count:统计页面置换次数/get:某物理块是否等待驻入新页面(-1:否)/flag:标记当前序号页面是否已驻入内存(-1:否)/block_num:驻留内存时间最长的页面所在的物理块序号/time标记对应序号的物理块中页面驻留时间 int i,j,max_stay=0,count=0; int get=-1,
4、flag=-1,block_num=-1; int timeSize; for(i=0;im;i+) /初始化time timei=0; for(i=0;in;i+) for(j=0;jm;j+) /有空闲物理块时,页面直接驻入内存空闲块 if(Blockj=-1) get=j; /物理块j即将(/等待)驻入新页面 break; for(j=0;jm;j+) /查找序号相同的页面 if(Blockj=Pagei)/物理块j中页面与当前期望调入内存的页面相同 flag=j; break; for(j=0;jmax_stay) max_stay=timej; block_num=j; /block
5、_num标记当前序号物理块中页面驻留时间最久 if(flag=-1) /不存在相同页面 if(get!=-1) /物理块即将(/等待)驻入新页面 Blockget=Pagei; /存入页面 timeget=0; /当前物理块重新计时 for(j=0;j=get;j+) /已驻入页面的驻留时间加1 timej+; get=-1; else /页面调度置换,序号block_num的物理块是驻留时间最久的 Blockblock_num=Pagei; timeblock_num=0; for(j=0;jSize;j+) timej+; block_num=-1; max_stay=0; count+;
6、 else /待调入页面与序号flag的物理块中页面相同 for(j=0;jm;j+) timej+; flag=-1; for(j=0;jm;j+) /输出物理块中的页面驻入情况 coutsetw(3)Blockj; coutm) count=count+m; cout缺页中断次数为:countendl;void main() int n,m,PageMax,BlockSize; cout*先进先出FIFO页面置换算法*endl; cout-endl; cout*(默认:-1表示物理块空闲)*endl; coutendl请输入系统为进程分配的物理块数(mm; if(mSize|m1) cout警告:输入的数据错误!endl; cout请重新输入物理块数:; else break; Init(Block,m); cout请输入总页面数(nn; coutn请输入页面号引用串:; creat(Page,n); coutFIFO算法过程如下:endl; FIFO(Page,Block,n,m); getchar(); /直接执行exe文件时做停留查看结果之用 getchar();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1