You are on page 1of 7

2)simulate page replacement algorithms (a) FIFO (b) LRU

FIFO: #include<stdio.h> #include<conio.h> int q[10],n,frame=0; int search(int ); void qinsert(int a[],int ,int ); void display(int , int a[],int ); void main() { int i,j,pn,np=0,pf=0; char ch; clrscr(); printf("Enter number of frames:"); scanf("%d",&n); for(i=0;i<n;i++) q[i]=-1; printf("Enter the sequence of pages:\n"); do {

printf("\n Enter page number:"); scanf("%d",&pn); np++; j=search(pn); if(j==-1) { qinsert(q,pn,frame); pf++;

if(frame==n-1) frame=0; else frame++; } display(pn,q,pf); printf("\nDo you want to enter another page?"); ch=getch();

printf("%c",ch);

}while(ch=='y'); getch(); }

int search(int pn) { int i=0,p=-1; for(i=0;i<n;i++) { if(q[i]==pn) { p=i; return p; } }

return p; }

void qinsert(int q[],int pn,int frame) {

q[frame]=pn; }

void display(int pn,int q[],int pf) { int i=0; printf("\npn=%d",pn); printf(" pages in memory:"); for(i=0;i<n;i++) printf("%d ",q[i]); printf(" page fault=%d\n",pf);

LRU:

#include<stdio.h> #include<conio.h> #define MAX 10 int q[MAX],n,frame=0; int search(int ); void page_insert(int a[],int ,int ); void display(int ,int a[],int ); void main()

{ int i,j,pn,np=0,pf=0,flag=0,k; int count=0,counter[MAX],small,pos; char ch; clrscr(); printf("Enter number of frames:"); scanf("%d",&n);

for(i=0;i<n;i++) { q[i]=-1; counter[i]=0; } printf("Enter the sequence of pages:\n"); do {

printf("\n Enter page number:"); scanf("%d",&pn); count++; np++;

j=search(pn); if(j==-1) { flag=0; pf++; for(i=0;i<n;i++) { if(q[i]==-1 && flag==0)

page_insert(q,pn,i); counter[i]=count;

flag=1; break; } } if(flag==0) {

small=counter[0];

for(i=0;i<n;i++) { if(counter[i]<=small) { small=counter[i]; pos=i; }

page_insert(q,pn,pos); counter[pos]=count; flag=1; } }

else

counter[j]=count;

display(pn,q,pf); printf("\nDo you want to enter another page?"); ch=getch();

printf("%c",ch);

}while(ch=='y'); getch(); }

int search(int pn) { int i=0,p=-1; for(i=0;i<n;i++) { if(q[i]==pn) { p=i; return p; } } return p; }

void page_insert(int q[],int pn,int small) {

q[small]=pn; }

void display(int pn,int q[],int pf) { int i=0; printf("\npn=%d",pn); printf(" pages in memory:"); for(i=0;i<n;i++) printf("%d ",q[i]); printf(" page fault=%d\n",pf);

You might also like