🖥️
B.TECH II YEAR • II SEMESTER • R22

Operating Systems - Lab Manual

Operating Systems Laboratory • Program Solution

📘 R22 Regulation 🎓 II Year 📚 II Semester 🖥️ Operating Systems 🧪 Lab Program
Selected Program

☛   Write C programs to simulate Page replacement policies a) FCFS b) LRU c) Optimal

← All Operating Systems Programs

Aim:

☛   Write C programs to simulate Page replacement policies
a) FCFS
b) LRU
c) Optimal

Solution :

a) FCFS

PROGRAM: ( fcfs_page.c )

 
#include <stdio.h>

int main() {
    int pages[50], frames[10], n, f;
    int index = 0, faults = 0;

    printf("Enter number of pages: ");
    scanf("%d", &n);

    printf("Enter page reference string:\n");
    for (int i = 0; i < n; i++)
        scanf("%d", &pages[i]);

    printf("Enter number of frames: ");
    scanf("%d", &f);

    for (int i = 0; i < f; i++)
        frames[i] = -1;

    for (int i = 0; i < n; i++) {
        int found = 0;

        for (int j = 0; j < f; j++) {
            if (frames[j] == pages[i]) {
                found = 1;
                break;
            }
        }

        if (!found) {
            frames[index] = pages[i];
            index = (index + 1) % f;
            faults++;
        }
    }

    printf("Total Page Faults (FIFO) = %d\n", faults);
    return 0;
}


OUTPUT:

 
$ gcc fcfs_page.c
$ ./a.out
Enter number of pages: 12
Enter page reference string:
7 0 1 2 0 3 0 4 2 3 0 3
Enter number of frames: 3
Total Page Faults (FIFO) = 10



b) LRU

PROGRAM: ( lru_page.c )

 
#include <stdio.h>

int main() {
    int pages[50], frames[10], recent[10];
    int n, f, faults = 0;

    printf("Enter number of pages: ");
    scanf("%d", &n);

    printf("Enter page reference string:\n");
    for (int i = 0; i < n; i++)
        scanf("%d", &pages[i]);

    printf("Enter number of frames: ");
    scanf("%d", &f);

    for (int i = 0; i < f; i++) {
        frames[i] = -1;
        recent[i] = 0;
    }

    for (int i = 0; i < n; i++) {
        int found = 0;

        for (int j = 0; j < f; j++) {
            if (frames[j] == pages[i]) {
                recent[j] = i;
                found = 1;
                break;
            }
        }

        if (!found) {
            int lru = 0;
            for (int j = 1; j < f; j++)
                if (recent[j] < recent[lru])
                    lru = j;

            frames[lru] = pages[i];
            recent[lru] = i;
            faults++;
        }
    }

    printf("Total Page Faults (LRU) = %d\n", faults);
    return 0;
}


OUTPUT:

 
$ gcc lru_page.c
$ ./a.out
Enter number of pages: 12
Enter page reference string:
7 0 1 2 0 3 0 4 2 3 0 3
Enter number of frames: 3
Total Page Faults (LRU) = 9



c) Optimal

PROGRAM: ( optimal_page.c )

 
#include <stdio.h>

int main() {
    int pages[50], frames[10];
    int n, f, faults = 0;

    printf("Enter number of pages: ");
    scanf("%d", &n);

    printf("Enter page reference string:\n");
    for (int i = 0; i < n; i++)
        scanf("%d", &pages[i]);

    printf("Enter number of frames: ");
    scanf("%d", &f);

    for (int i = 0; i < f; i++)
        frames[i] = -1;

    for (int i = 0; i < n; i++) {
        int found = 0;

        for (int j = 0; j < f; j++) {
            if (frames[j] == pages[i]) {
                found = 1;
                break;
            }
        }

        if (!found) {
            int index = -1, farthest = i + 1;

            for (int j = 0; j < f; j++) {
                int k;
                for (k = i + 1; k < n; k++) {
                    if (frames[j] == pages[k]) {
                        if (k > farthest) {
                            farthest = k;
                            index = j;
                        }
                        break;
                    }
                }
                if (k == n) {
                    index = j;
                    break;
                }
            }

            if (index == -1)
                index = 0;

            frames[index] = pages[i];
            faults++;
        }
    }

    printf("Total Page Faults (Optimal) = %d\n", faults);
    return 0;
}


OUTPUT:

 
$ gcc optimal_page.c
$ ./a.out
Enter number of pages: 12
Enter page reference string:
7 0 1 2 0 3 0 4 2 3 0 3
Enter number of frames: 3
Total Page Faults (Optimal) = 7



💻 Run This C Program

☛   Write C programs to simulate Page replacement policies a) FCFS b) LRU c) Optimal
The selected C program is loaded automatically into the editor. Edit the program, provide input if required and click Run.

The compiler is embedded using OneCompiler. Your C program is compiled and run in the embedded Linux environment; Study Glance does not execute C code directly on your web server. Some Operating Systems programs (fork, pipes, FIFOs, message queues, shared memory and semaphores) may be restricted in an online sandbox. If a program does not run here, compile it on a Linux system with gcc.
← Back to Operating Systems Lab Programs 📚 All Lab Manuals