#include <stdio.h>
int findLRU(int time[], int n)
{
int i, minimum = time[0], pos = 0;
for (i = 1; i < n; ++i)
{
if (time[i] < minimum)
{
minimum = time[i];
pos = i;
}
}
return pos;
}
//main function
int main()
{
int f, n, frames[10], pages[30], counter = 0, time[10], flag1, flag2, i, j, pos, faults = 0, count=0,
k, avail,ch;
char h[10]="hit", pf[10]="fault";
printf("Enter number of frames: ");
scanf("%d", &f);
printf("Enter number of pages: ");
scanf("%d", &n);
printf("Enter reference string: ");
for (i = 0; i < n; ++i)
{
scanf("%d", &pages[i]);
}
printf(" select the Page replacement algorithm:n 1. LRU n 2.FIFO n");
printf("enter your choice:");
scanf("%d", &ch);
switch(ch)
{
case 1:
for (i = 0; i < f; ++i)
{
frames[i] = -1;
}
for (i = 0; i < n; ++i)
{
flag1 = flag2 = 0;
for (j = 0; j < f; ++j)
{
if (frames[j] == pages[i])
{
counter++;
time[j] = counter;
flag1 = flag2 = 1;
break;
}
}
if (flag1 == 0)
{
for (j = 0; j < f; ++j)
{
if (frames[j] == -1)
{
counter++;
faults++;
frames[j] = pages[i];
time[j] = counter;
flag2 = 1;
break;
}
}
}
if (flag2 == 0)
{
pos = findLRU(time, f);
counter++;
faults++;
frames[pos] = pages[i];
time[pos] = counter;
}
printf("n");
for (j = 0; j < f; ++j)
{
printf("%dt", frames[j]);
}
}
printf("nTotal Page Faults = %d", faults);
break;
case 2:
for(i=0;i<f;i++)
frames[i]= -1;
j=0;
printf("tref stringt page framesn");
for(i=0;i<n;i++)
{
printf("%dtt",pages[i]);
avail=0;
for(k=0;k<f;k++)
if(frames[k]==pages[i])
{
avail=1;
for(k=0;k<f;k++)
printf("%dt",frames[k]);
}
if (avail==0)
{
frames[j]=pages[i];
j=(j+1)%f;
count++;
for(k=0;k<f;k++)
printf("%dt",frames[k]);
}
printf("n");
}
printf("Page Fault Is %d",count);
break;
default: printf("invalid coicen");
break;
}
return 0;
}

Lab9 LRU and FIFO.docx

  • 1.
    #include <stdio.h> int findLRU(inttime[], int n) { int i, minimum = time[0], pos = 0; for (i = 1; i < n; ++i) { if (time[i] < minimum) { minimum = time[i]; pos = i; } } return pos; } //main function int main() { int f, n, frames[10], pages[30], counter = 0, time[10], flag1, flag2, i, j, pos, faults = 0, count=0, k, avail,ch; char h[10]="hit", pf[10]="fault"; printf("Enter number of frames: "); scanf("%d", &f); printf("Enter number of pages: "); scanf("%d", &n); printf("Enter reference string: "); for (i = 0; i < n; ++i) { scanf("%d", &pages[i]); } printf(" select the Page replacement algorithm:n 1. LRU n 2.FIFO n"); printf("enter your choice:"); scanf("%d", &ch); switch(ch) { case 1: for (i = 0; i < f; ++i) { frames[i] = -1; }
  • 2.
    for (i =0; i < n; ++i) { flag1 = flag2 = 0; for (j = 0; j < f; ++j) { if (frames[j] == pages[i]) { counter++; time[j] = counter; flag1 = flag2 = 1; break; } } if (flag1 == 0) { for (j = 0; j < f; ++j) { if (frames[j] == -1) { counter++; faults++; frames[j] = pages[i]; time[j] = counter; flag2 = 1; break; } } } if (flag2 == 0) { pos = findLRU(time, f); counter++; faults++; frames[pos] = pages[i]; time[pos] = counter; } printf("n"); for (j = 0; j < f; ++j)
  • 3.
    { printf("%dt", frames[j]); } } printf("nTotal PageFaults = %d", faults); break; case 2: for(i=0;i<f;i++) frames[i]= -1; j=0; printf("tref stringt page framesn"); for(i=0;i<n;i++) { printf("%dtt",pages[i]); avail=0; for(k=0;k<f;k++) if(frames[k]==pages[i]) { avail=1; for(k=0;k<f;k++) printf("%dt",frames[k]); } if (avail==0) { frames[j]=pages[i]; j=(j+1)%f; count++; for(k=0;k<f;k++) printf("%dt",frames[k]); } printf("n"); } printf("Page Fault Is %d",count); break; default: printf("invalid coicen"); break; } return 0; }