Skip to main content

Write the simulation program to implement demand paging and show the page scheduling and total number of page faults for the following given page reference string. Give input n as the number of memory frames. Reference String: 2,5,2,8,5,4,1,2,3,2,6,1,2,5,9,8 (LFU) Least Frequently Used


 #include <stdio.h>

#include <stdlib.h>

// Function to find the index of the page with the least frequency
int findLFUPage(int freq[], int n) {
    int minFreq = freq[0];
    int minIndex = 0;

    for (int i = 1; i < n; i++) {
        if (freq[i] < minFreq) {
            minFreq = freq[i];
            minIndex = i;
        }
    }

    return minIndex;
}

// Function to simulate demand paging with LFU page replacement
void demandPagingLFU(int referenceString[], int n, int numFrames) {
    int frames[numFrames];
    int pageFaults = 0;
    int freq[numFrames]; // Frequency of each page in the frames
    for (int i = 0; i < numFrames; i++) {
        frames[i] = -1; // Initialize frames to empty
        freq[i] = 0;    // Initialize frequency to 0
    }

    printf("Page Schedule:\n");
    for (int i = 0; i < n; i++) {
        int page = referenceString[i];
        int found = 0;
        for (int j = 0; j < numFrames; j++) {
            if (frames[j] == page) {
                freq[j]++;
                found = 1;
                break;
            }
        }

        if (!found) {
            int lfuIndex = findLFUPage(freq, numFrames);
            frames[lfuIndex] = page;
            freq[lfuIndex] = 1;
            pageFaults++;

            printf("Page %d -> ", page);
            for (int j = 0; j < numFrames; j++) {
                if (frames[j] == -1) {
                    printf("M ");
                } else {
                    printf("%d ", frames[j]);
                }
            }
            printf(" (Page Fault)\n");
        } else {
            printf("Page %d -> ", page);
            for (int j = 0; j < numFrames; j++) {
                if (frames[j] == -1) {
                    printf("M ");
                } else {
                    printf("%d ", frames[j]);
                }
            }
            printf("\n");
        }
    }

    printf("\nTotal Page Faults: %d\n", pageFaults);
}

int main() {
    int numFrames;
    int n;

    printf("Enter the number of memory frames: ");
    scanf("%d", &numFrames);

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

    int referenceString[n];
    printf("Enter the reference string (separated by spaces): ");
    for (int i = 0; i < n; i++) {
        scanf("%d", &referenceString[i]);
    }

    demandPagingLFU(referenceString, n, numFrames);

    return 0;
}

Comments

Popular posts from this blog

Write a program to read book information (bookid, bookname, bookprice, bookqty) in file “book.dat”. Write a menu driven program to perform the following operations using Random access file: i. Search for a specific book by name. ii. Display all book and total cost

  import java . io .*; import java . util .*; class Book {       String name , id ;       int qty ;       double price , total ;       Book ( String i , String n , String p , String q )      {               name = n ;               id = i ;               qty = Integer . parseInt ( q );               price = Double . parseDouble ( p );               total = qty * price ;      }       public String toString ()      {               System . out . println ( "name\t id\t qty\t price\t total" );               String s = name + "\t" + id + "\t" + qty + "\t" + price + "\t" + total ;           ...

Define a class MyDate (day, month, year) with methods to accept and display a MyDate object. Accept date as dd, mm, yyyy. Throw user defined exception “InvalidDateException” if the date is invalid. Examples of invalid dates : 03 15 2019, 31 6 2000, 29 2 2021

  import java . io .*; import java . util .*; class InvalidDateException extends Exception {       InvalidDateException ()       {               System . out . println ( "Invalid Date" );       } } class MyDate {       int day , mon , yr ;       void accept ( int d , int m , int y )       {             day = d ;             mon = m ;             yr = y ;       }       void display ()       {             System . out . println ( "Date is valid : " + day + "/" + mon + "/" + yr );       } } class Date {       public static void main ( String args []) throws Exception       {             Scanner sc = new Sca...

Write a Java program to design a screen using Awt that will take a user name and password. If the user name and password are not same, raise an Exception with appropriate message. User can have 3 login chances only. Use clear button to clear the TextFields.

  import java . awt .*; import java . awt . event .*; import javax . swing .*; class InvalidPasswordException extends Exception {       InvalidPasswordException ()       {             System . out . println ( "Username and password is not same" );       } } public class Password extends Frame implements ActionListener {       Label uname , upass ;       TextField nametext ;       TextField passtext , msg ;       Button login , Clear ;       Panel p ;       int attempt = 0 ;       char c = '*' ;             public void login ()       {             p = new Panel ();             uname = new Label ( "Username : " , Label . CENTER );             upass = n...