0% found this document useful (0 votes)
18 views4 pages

Page Replacement Algorithms Simulation

os notes
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views4 pages

Page Replacement Algorithms Simulation

os notes
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

EXPERIMENT-3

Simulate the following page replacement Alogorithm:-

A)FIFO

B)LRU

C)LFU

A)FIRST IN FIRST OUT(FIFO):-

AIM:To implement FIFO page replacement technique?

PROGRAM:

#include <stdio.h>
int main() {
int i, j, n, page[50], frame[10], no, k, avail, count = 0, top = 0;
printf("\n Enter the number of pages: "); scanf("%d", &n);
printf("\n Enter the page reference string: ");
for (i = 0; i < n; i++) scanf("%d",
&page[i]); printf("\n Enter the number of
frames: ");
scanf("%d", &no); for (i
= 0; i < no; i++) frame[i]
= -1; for (i = 0; i < n;
i++) { avail = 0; for (j =
0; j < no; j++) { if
(frame[j] == page[i]) {
avail = 1; break; } } if
(avail == 0) { frame[top]
= page[i]; top = (top +
1) % no; count++; }
printf("\n"); for (k = 0; k
< no; k++)
printf("%d\t", frame[k]);
}
printf("\n\n Total Page Faults: %d", count);
return 0;
}

B)LEAST RECENTLY USED(LRU)

AIM:To implement LRU page replacement technique

PROGRAM:
#include <stdio.h>

int main() { int frames[10], pages[30],


age[10]; int num_frames, num_pages,
page_faults = 0; int i, j, pos, min_age;
printf("Enter the number of frames: ");
scanf("%d", &num_frames);

printf("Enter the number of pages: ");


scanf("%d", &num_pages);

printf("Enter the reference string (page numbers): ");


for (i = 0; i < num_pages; i++) { scanf("%d",
&pages[i]);
}
for (i = 0; i < num_frames; i++) {
frames[i] = -1; age[i] = 0; }
for (i = 0; i < num_pages; i++) {
int found = 0; for (j = 0; j <
num_frames; j++) { if (frames[j]
== pages[i]) { found = 1; age[j]
= i + 1; break; } } if (found == 0)
{ pos = 0; min_age = age[0]; for
(j = 1; j < num_frames; j++) { if
(age[j] < min_age) { min_age =
age[j]; pos = j; } } frames[pos] =
pages[i]; age[pos] = i + 1;
page_faults++;
printf("Page %d caused a page fault: ", pages[i]);
for (j = 0; j < num_frames; j++) {
if (frames[j] != -1) printf("%d ",
frames[j]);
else printf("-
"); }
printf("\n");
}}
printf("\nTotal Page Faults = %d\n", page_faults);

return 0;
}
C)LEAST FREQUENTLY USED(LFU)

AIM:To implement LFU page replacement technique

PROGRAM:

#include <stdio.h>
#include <limits.h>

#define MAX_FRAMES 10
#define MAX_PAGES 50

int findLFU(int frames[], int freq[], int frame_count) {


int minFreq = INT_MAX; int
minIndex = 0; for (int i = 0; i <
frame_count; i++) { if
(freq[frames[i]] < minFreq) {
minFreq = freq[frames[i]]; minIndex
= i;
}}
return frames[minIndex];
}

int main() {
int pages[MAX_PAGES], frames[MAX_FRAMES];
int freq[MAX_PAGES] = {0}; int page_count,
frame_count, page_faults = 0;

printf("Enter the number of pages: ");


scanf("%d", &page_count);
printf("Enter the page sequence: "); for
(int i = 0; i < page_count; i++) {
scanf("%d", &pages[i]);
}

printf("Enter the number of frames: ");


scanf("%d", &frame_count);

for (int i = 0; i < frame_count; i++) { frames[i]


= -1;
}

for (int i = 0; i < page_count; i++) { int


page = pages[i];
int found = 0;
for (int j = 0; j < frame_count; j++) {
if (frames[j] == page) { found = 1;
freq[page]++; break; } } if (!found)
{ for (int j = 0; j < frame_count; j++)
{ if (frames[j] == -1) { frames[j] =
page; freq[page]++; page_faults++;
found = 1; break; }
} } if (!found) { int lfu_page = findLFU(frames,
freq, frame_count); for (int j = 0; j < frame_count;
j++) { if (frames[j] == lfu_page) { frames[j] =
page; freq[lfu_page] = 0; freq[page]++;
page_faults++; break; }
} } printf("Current frames: "); for
(int j = 0; j < frame_count; j++) { if
(frames[j] != -1) { printf("%d ",
frames[j]);
} else { printf("-
");
}}
printf("\n");
}

printf("Total Page Faults: %d\n", page_faults);


return 0; }

You might also like