Untitled
unknown
plain_text
a year ago
2.7 kB
6
Indexable
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
void printFrames(int frames[], int numFrames) {
printf("| ");
for (int i = 0; i < numFrames; i++) {
if (frames[i] == -1)
printf("_ | ");
else
printf("%d | ", frames[i]);
}
printf("");
}
int isPageInFrames(int frames[], int numFrames, int page) {
for (int i = 0; i < numFrames; i++) {
if (frames[i] == page) {
return 1; // Page hit
}
}
return 0; // Page fault
}
void fifoPageReplacement(int referenceString[], int numReferences, int numFrames) {
int frames[MAX];
int front = 0, rear = 0, pageFaults = 0, pageHits = 0;
// Initialize frames with -1 indicating empty
for (int i = 0; i < numFrames; i++) {
frames[i] = -1;
}
printf("\nReference String: ");
for (int i = 0; i < numReferences; i++) {
printf("%d ", referenceString[i]);
}
printf("\n\n");
printf("Step\tPage\tFRAMES\t\tStatus\n");
printf("----\t----\t--------------------\t------\n");
for (int i = 0; i < numReferences; i++) {
int page = referenceString[i];
char status[10];
// Check if page is in frames
if (isPageInFrames(frames, numFrames, page)) {
sprintf(status, "Hit");
pageHits++;
} else {
// Page fault: Replace the oldest page
frames[front] = page;
front = (front + 1) % numFrames;
sprintf(status, "Fault");
pageFaults++;
}
// Print the step, page, and frame contents
printf("%d\t%d\t", i+1, page);
printFrames(frames, numFrames);
printf("\t%s\n", status); // Print status on the same line
}
printf("\nTotal Page Faults: %d\n", pageFaults);
printf("Total Page Hits: %d\n", pageHits);
}
int main() {
int numReferences, numFrames;
printf("********NIRAJAN UPRETI**********\n ");
printf("-------FIFO----------\n");
// User input for number of frames
printf("Enter the number of page frames: ");
scanf("%d", &numFrames);
// User input for number of reference strings
printf("Enter the number of reference strings: ");
scanf("%d", &numReferences);
int referenceString[numReferences];
// User input for reference strings
printf("Enter the reference string (space separated): ");
for (int i = 0; i < numReferences; i++) {
scanf("%d", &referenceString[i]);
}
// Run FIFO page replacement
fifoPageReplacement(referenceString, numReferences, numFrames);
return 0;
}
Editor is loading...
Leave a Comment