先进先出FIFO页面置换算法2.docx
- 文档编号:12181882
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:8
- 大小:47.62KB
先进先出FIFO页面置换算法2.docx
《先进先出FIFO页面置换算法2.docx》由会员分享,可在线阅读,更多相关《先进先出FIFO页面置换算法2.docx(8页珍藏版)》请在冰豆网上搜索。
先进先出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(); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 先进 FIFO 页面 置换 算法