0% found this document useful (0 votes)
107 views10 pages

Page Replacement Algorithms

The document discusses and provides code implementations for three page replacement algorithms: FIFO, Optimal, and LRU. FIFO replaces the oldest page, Optimal replaces the page that will not be used for the longest time in the future, and LRU replaces the least recently used page. The code takes a page reference string as input, simulates each algorithm, tracks the number of page faults, and displays the contents of the frame at each step.

Uploaded by

Isha Rangari
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
0% found this document useful (0 votes)
107 views10 pages

Page Replacement Algorithms

The document discusses and provides code implementations for three page replacement algorithms: FIFO, Optimal, and LRU. FIFO replaces the oldest page, Optimal replaces the page that will not be used for the longest time in the future, and LRU replaces the least recently used page. The code takes a page reference string as input, simulates each algorithm, tracks the number of page faults, and displays the contents of the frame at each step.

Uploaded by

Isha Rangari
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 10

PAGE REPLACEMENT ALGORITHMS :- FIFO, OPTIMAL, LRU

#include<stdio.h>
int n,nf;

int in[100];
int p[50];
int hit=0;
int i,j,k;

int pgfaultcnt=0;
void getData()
{
printf("\nEnter length of page reference sequence :- ");

scanf("%d",&n);
printf("\nEnter the page reference sequence :- ");
for(i=0; i<n; i++)
scanf("%d",&in[i]);
printf("\nEnter no of frames :- ");

scanf("%d",&nf);
}
void initialize()
{

pgfaultcnt=0;
for(i=0; i<nf; i++)
p[i]=9999;
}

int isHit(int data)


{
hit=0;
for(j=0; j<nf; j++)
{
if(p[j]==data)

{
hit=1;
break;
}

}
return hit;
}
int getHitIndex(int data)

{
int hitind;
for(k=0; k<nf; k++)
{
if(p[k]==data)

{
hitind=k;
break;
}

}
return hitind;
}
void dispPages()

{
for (k=0; k<nf; k++)
{
if(p[k]!=9999)

printf(" %d",p[k]);
}
}
void dispPgFaultCnt()

{
printf("\n\nTotal no of page faults:- %d\n",pgfaultcnt);
}
void fifo()

{
printf("\n\t\t\t\t\t\t\tFIFO ALGORITHM");
initialize();
for(i=0; i<n; i++)

{
printf("\nFor %d :",in[i]);
if(isHit(in[i])==0)
{
for(k=0; k<nf-1; k++)

p[k]=p[k+1];
p[k]=in[i];
pgfaultcnt++;
dispPages();

}
else
printf("No page fault");
}

dispPgFaultCnt();
}
void optimal()
{

printf("\n\t\t\t\t\t\t\tOPTIMAL ALGORITHM");
initialize();
int near[50];
for(i=0; i<n; i++)

{
printf("\nFor %d :",in[i]);
if(isHit(in[i])==0)
{

for(j=0; j<nf; j++)


{
int pg=p[j];
int found=0;

for(k=i; k<n; k++)


{
if(pg==in[k])
{
near[j]=k;

found=1;
break;
}
else

found=0;
}
if(!found)
near[j]=9999;

}
int max=-9999;
int repindex;
for(j=0; j<nf; j++)

{
if(near[j]>max)
{
max=near[j];

repindex=j;
}
}
p[repindex]=in[i];

pgfaultcnt++;

dispPages();
}

else
printf("No page fault");
}
dispPgFaultCnt();
}

void lru()
{
printf("\n\t\t\t\t\t\t\tLRU ALGORITHM");
initialize();

int least[50];
for(i=0; i<n; i++)
{
printf("\nFor %d :",in[i]);

if(isHit(in[i])==0)
{
for(j=0; j<nf; j++)
{

int pg=p[j];
int found=0;
for(k=i-1; k>=0; k--)
{

if(pg==in[k])
{
least[j]=k;
found=1;

break;
}
else
found=0;

}
if(!found)
least[j]=-9999;
}
int min=9999;

int repindex;
for(j=0; j<nf; j++)
{
if(least[j]<min)

{
min=least[j];
repindex=j;
}

}
p[repindex]=in[i];
pgfaultcnt++;
dispPages();

}
else
printf("No page fault!");
}

dispPgFaultCnt();
}
int main()
{

int choice;
while(1)
{
printf("\n\t\t\t\t\t\tPage Replacement Algorithms\n1.Enter
data\n2.FIFO\n3.Optimal\n4.LRU\n5.Exit\nEnter your choice :- ");
scanf("%d",&choice);
switch(choice)
{
case 1:

getData();
break;
case 2:
fifo();

break;
case 3:
optimal();
break;

case 4:
lru();
break;
default:

return 0;
break;
}
}
}

Output :-

Insert Data
FIFO – First In First Out

OPTIMAL
LRU – Least Recently Used

You might also like