欢迎来到天天文库
浏览记录
ID:58234204
大小:95.50 KB
页数:7页
时间:2020-05-07
《先进先出FIFO页面置换算法.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、《操作系统》课外实践报告项目名称:页面置换算法所在班级:姓名:学号:组长:小组成员:指导教师:支丽平成绩评定:页面置换算法中的先进先出算法一实验目的了解最佳页面置换算法与先进先出FIFO页面置换算法,并掌握其基本原理二实验目标用C++模拟最佳页面置换算法与先进先出FIFO页面置换算法三实验步骤第一步,输入系统为进程分配的物理块数(m<=10)第二步,输入总页面数(n<=30)第三步,输入页面号引用串第四步,系统自动给出演示数据第五步,分析数据第六步,重复一到五步骤四技术难点及解决方案技术难点:如何找到最久页面解决方案:建立一个时间数组,做标记五关键数据和算法流程代码如下:#include
2、"iostream"#include"iomanip"//使用setw()时用到的头文件#include"stdio.h"#include"stdlib.h"#include"conio.h"//使用getchar()时用到的头文件usingnamespacestd;#defineMax30//某进程调入内存中的最大页面数#defineSize10//系统为某进程分配的最大物理块数voidInit(intBlock[],intm)//初始化物理块{inti;for(i=0;i3、{inti;for(i=0;i>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[Si4、ze];for(i=0;imax_stay){max_st5、ay=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;j6、ize;j++){time[j]++;}block_num=-1;max_stay=0;count++;}}else//待调入页面与序号flag的物理块中页面相同{for(j=0;jm)count=count+m;cout<<"缺页中断次数为:"<7、出FIFO页面置换算法*******"<>m;if(m>Size8、9、m<1){cout<<"警告:输入的数据错误!"<
3、{inti;for(i=0;i>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[Si
4、ze];for(i=0;imax_stay){max_st
5、ay=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
6、ize;j++){time[j]++;}block_num=-1;max_stay=0;count++;}}else//待调入页面与序号flag的物理块中页面相同{for(j=0;jm)count=count+m;cout<<"缺页中断次数为:"<7、出FIFO页面置换算法*******"<>m;if(m>Size8、9、m<1){cout<<"警告:输入的数据错误!"<
7、出FIFO页面置换算法*******"<>m;if(m>Size
8、
9、m<1){cout<<"警告:输入的数据错误!"<
此文档下载收益归作者所有