1 / 5
文档名称:

最佳页面置换算法.doc

格式:doc   大小:15KB   页数:5页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

最佳页面置换算法.doc

上传人:mh900965 2018/4/20 文件大小:15 KB

下载得到文件列表

最佳页面置换算法.doc

相关文档

文档介绍

文档介绍:#include ""
#include "" //使用setw()时用到的头文件
#include ""
#include ""
#define Max 30 //某进程调入内存中的最大页面数
#define Size 10 //系统为某进程分配的最大物理块数
void Init(int Block[],int m) //初始化物理块
{ int i;
for(i=0;i<m;i++)
{
Block[i]=-1;
}
}
void creat(int Page[],int n) //输入页面串引用号
{ int i;
for(i=0;i<n;i++)
{
cin>>Page[i];
}
}
void zuijia(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,flag=-1,block_num=-1;
int time[Size];
float p=0;
for(i=0;i<m;i++) //初始化time[]
{ time[i]=0;
}
for(i=0;i<n;i++)
{
max_stay=0;
for(j=0;j<m;j++) //有空闲物理块时,页面直接驻入内存空闲块
{ if(Block[j]==-1)
{
get=j; //物理块j即将(/等待)驻入新页面
break;
}
}
for(j=0;j<m;j++) //查找序号相同的页面
{ if(Block[j]==Page[i])//物理块j中页面与当前期望调入内存的页面相同
{
flag=j;
break;
}
}


for(j=0;j<m;j++) //找到驻留内存时间最久的页面置换出
{
for(int x=i+1;x<n;x++)
{
if(Block[j]==Page[x])
{
time[j]=x;
break;
}
else {
time[j]=n;
}
}
}
for(j=0;j<m;j++)
{
if(time[j]>max_stay)
{
max_stay=time[j];

}
}

for(j=0;j<m;j++)
{
if(time[j]==max_stay)
block_num=j; //block_num标记当前序号物理块中页面驻留时间最久

}

if(flag==-1) //不存在相同页面
{ if(get!=-1) //物理块即将(/等待)驻入新页面
{
cout