optimal

PHOTO EMBED

Wed Jun 05 2024 14:13:53 GMT+0000 (Coordinated Universal Time)

Saved by @login

#include <stdio.h>

int main() {
    int frames, pages, i, j, page_faults = 0, flag = 0, pos = 0;
    
    printf("Enter the number of frames: ");
    scanf("%d", &frames);
    
    printf("Enter the number of pages: ");
    scanf("%d", &pages);
    
    int frame[frames], page[pages];
    int temp[frames];
    
    for (i = 0; i < frames; i++) {
        frame[i] = -1;
    }
    
    printf("Enter reference string: ");
    for (i = 0; i < pages; i++) {
        scanf("%d", &page[i]);
    }
    
    for (i = 0; i < pages; i++) {
        flag = 0;
        for (j = 0; j < frames; j++) {
            if (frame[j] == page[i]) {
                flag = 1;
                break;
            }
        }
        
        if (flag == 0) {
            if (pos < frames) {
                frame[pos++] = page[i];
            } else {
                int farthest = 0;
                for (j = 0; j < frames; j++) {
                    temp[j] = -1;
                    for (int k = i + 1; k < pages; k++) {
                        if (frame[j] == page[k]) {
                            temp[j] = k;
                            break;
                        }
                    }
                    if (temp[j] == -1) {
                        farthest = j;
                        break;
                    } else {
                        if (temp[j] > temp[farthest] || (temp[j] == temp[farthest] && j < farthest)) {
                            farthest = j;
                        }
                    }
                }
                frame[farthest] = page[i];
                page_faults++;
            }
        }
    }
    
    printf("Total Page Faults: %d\n", page_faults);
    
    return 0;
}
content_copyCOPY