LRU算法C语言实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二
实验代码:
#include <iostream.h>
#include <stdio.h>
#define M 5
#define N 12
typedef struct page
{
int num; //页面号
int time; //调入内存时间
}Page;
Page b[M]; //内存单元数
int c[M][N];
K=-1;
Init(b,c);
for(i=0;i<N;i++)
{
L(a[i],b);
c[0][i]=a[i];
for(j=0;j<M;j++)
c[j][i]=b[j].num;
}
printf("内存状态为:\n");
for(j=0;j<N;j++)
printf("%2d ",a[j]);
printf("\n");
printf("\n缺页数为:%6d",K+1);
printf("\n");
}
运行结果:
int q[100]; //调入队列
int K;
void Init(Page *b,int c[M][N])
{
int i,j;
for(i=0;i<N;i++)
{
b[i].num=-1;
b[i].time=N-i-1;
}
for(i=0;i<M;i++)
for(j=0;j<N;j++)
c[i][j]=-1;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
if(c[i][j]==-1)
printf("%2c ",32);
else
printf("%2d ",c[i][j]);
}
printf("\n");
}
printf("\n调入队列为:");
for(i=0;i<K+1;i++)
printf("%3d",q[i]);
}
else
{
q[++K]=r; //调入页面
val=Max(b);
b[val].num=r;
b[val].time=0;
for(i=0;i<M;i++)
if(i!=val) b[i].time++;
}
}
void main()
{
int a[N]={2,3,2,1,5,2,4,5,3,2,5,2};
int i,j;
}
int Max(Page *b)
{
int i;
int max=-1;
int tag=0;
for(i=0;i<M;i++)
{
if(b[i].time>max)
{
max=b[i].time;
tag=i;
}
}
return tag;
}Байду номын сангаас
int Equation(int r,Page *b)
{
int i;
for(i=0;i<M;i++)
{
if(r==b[i].num) return i;
}
return -1;
}
void L(int r,Page *b)
{
int i;
int val;
val=Equation(r,b);
if(val>=0)
{
b[val].time=0;
for(i=0;i<M;i++)
if(i!=val)
b[i].time++;
相关文档
最新文档