Вы находитесь на странице: 1из 3

/* SHARANABASU G ANGADI */

/* Information Science & Engineering */


/* BEC Bagalkot , (Karnataka) INDIA. */
/* angadi.sharan@yahoo.in */

#include<stdio.h>

typedef struct lru


{ int use,value;
}LRU;

LRU p[15];

int find(int n,int fr)


{ int i;
for(i=0;i<n;i++)
{ if(p[i].value==fr)
return i;
}
return -1;
}

void incr(int n)
{ int i;
for(i=0;i<n;i++)
{ p[i].use++;
}
}

void init(int n)
{ int i;
for(i=0;i<n;i++)
{ p[i].value=-1;
}
}

void print(int n)
{ int i;
// printf("");
for(i=0;i<n;i++)
{ printf("%d ",p[i].value);
}
printf("\n");
}

int least_used(int n)
{ int i,temp=-1,pos=-1;
for(i=0;i<n;i++)
{ if(p[i].use>temp)
{ temp=p[i].use;
pos=i;
}
}
return pos;
}

void disp(int n)
{ int i;
for(i=0;i<n;i++)
{ printf("use=%d value=%d",p[i].use,p[i].value);
}
}

int main()
{
int n,i,z,str[25],count=0,rpos,pos,temp;
printf("Enter the Size of Reference String :\n ");
scanf("%d",&z);
printf("Enter The Reference String :\n ");
for(i=0;i<z;i++)
{ scanf("%d",&str[i]);
}
printf("Enter the Frame Size \n: ");
scanf("%d",&n);
init(n);
temp=n;

for(i=0;count<n;i++)
{ if(find(n,str[i])==-1)
{ p[count].value=str[i];
p[count].use=temp;
count++;
print(i+1);
temp--;
}
}
for( ;i<z;i++)
{ rpos=find(n,str[i]);
if(rpos==-1)
{ pos=least_used(n);
p[pos].value=str[i];
p[pos].use=0;
incr(n);
count++;
//printf("\n");
print(n);
}
else
{ //rpos=find(n,str[i]);
p[rpos].use=0;
incr(n);
}

}
printf("Total PageFaults=%d\n",count);
return 0;

Вам также может понравиться