Page Replacement Algorithm - 2 | Operating System - Computer Science Engineering (CSE) PDF Download

Prerequisite

Page Replacement Algorithms In operating systems that use paging for memory management, page replacement algorithm are needed to decide which page needed to be replaced when new page comes in. Whenever a new page is referred and not present in memory, page fault occurs and Operating System replaces one of the existing pages with newly needed page. Different page replacement algorithms suggest different ways to decide which page to replace. The target for all algorithms is to reduce number of page faults. 

First In First Out (FIFO) page replacement algorithm
This is the simplest page replacement algorithm. In this algorithm, operating system keeps track of all pages in the memory in a queue, oldest page is in the front of the queue. When a page needs to be replaced page in the front of the queue is selected for removal.
Example -1: Consider page reference string 1, 3, 0, 3, 5, 6 and 3 page slots. Initially all slots are empty, so when 1, 3, 0 came they are allocated to the empty slots —> 3 Page Faults.
when 3 comes, it is already in memory so —> 0 Page Faults. Then 5 comes, it is not available in memory so it replaces the oldest page slot i.e 1. —>1Page Fault.
Finally 6 comes, it is also not available in memory so it replaces the oldest page slot i.e 3 —>1 Page Fault.
So total page faults = 5. 

Example -2: Consider the following reference string: 0, 2, 1, 6, 4, 0, 1, 0, 3, 1, 2, 1. Using FIFO page replacement algorithm – 

Page Replacement Algorithm - 2 | Operating System - Computer Science Engineering (CSE)

So, total number of page faults = 9. Given memory capacity (as number of pages it can hold) and a string representing pages to be referred, write a function to find number of page faults.

Implementation: Let capacity be the number of pages that memory can hold. Let set be the current set of pages in memory.

  1. Start traversing the pages.
    • If set holds less pages than capacity.
      a) Insert page into the set one by one until the size  of set reaches capacity or all page requests are processed.
      b) Simultaneously maintain the pages in the  queue to perform FIFO.
      c) Increment page fault
    • Else
      If current page is present in set, do nothing.
      Else
      a) Remove the first page from the queue as it was the first to be entered in the memory
      b) Replace the first page in the queue with the current page in the string.
      c) Store current page in the queue.
      d) Increment page faults.
  2. Return page faults.

Programming Implementation

C++

// C++ implementation of FIFO page replacement

// in Operating Systems.

#include<bits/stdc++.h>

using namespace std;

// Function to find page faults using FIFO

int pageFaults(int pages[], int n, int capacity)

{

    // To represent set of current pages. We use

    // an unordered_set so that we quickly check

    // if a page is present in set or not

    unordered_set<int> s;

    // To store the pages in FIFO manner

    queue<int> indexes;

    // Start from initial page

    int page_faults = 0;

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

    {

        // Check if the set can hold more pages

        if (s.size() < capacity)

        {

            // Insert it into set if not present

            // already which represents page fault

            if (s.find(pages[i])==s.end())

            {

                // Insert the current page into the set

                s.insert(pages[i]);

                // increment page fault

                page_faults++;

                // Push the current page into the queue

                indexes.push(pages[i]);

            }

        }

        // If the set is full then need to perform FIFO

        // i.e. remove the first page of the queue from

        // set and queue both and insert the current page

        else

        {

            // Check if current page is not already

            // present in the set

            if (s.find(pages[i]) == s.end())

            {

                // Store the first page in the

                // queue to be used to find and

                // erase the page from the set

                int val = indexes.front();                

                // Pop the first page from the queue

                indexes.pop();

                // Remove the indexes page from the set

                s.erase(val);

                // insert the current page in the set

                s.insert(pages[i]);

                // push the current page into

                // the queue

                indexes.push(pages[i]);

                // Increment page faults

                page_faults++;

            }

        }

    }

    return page_faults;

}

// Driver code

int main()

{

    int pages[] = {7, 0, 1, 2, 0, 3, 0, 4,

                2, 3, 0, 3, 2};

    int n = sizeof(pages)/sizeof(pages[0]);

    int capacity = 4;

    cout << pageFaults(pages, n, capacity);

    return 0;

}

Output

7

The document Page Replacement Algorithm - 2 | Operating System - Computer Science Engineering (CSE) is a part of the Computer Science Engineering (CSE) Course Operating System.
All you need of Computer Science Engineering (CSE) at this link: Computer Science Engineering (CSE)
10 videos|99 docs|33 tests

Top Courses for Computer Science Engineering (CSE)

10 videos|99 docs|33 tests
Download as PDF
Explore Courses for Computer Science Engineering (CSE) exam

Top Courses for Computer Science Engineering (CSE)

Signup for Free!
Signup to see your scores go up within 7 days! Learn & Practice with 1000+ FREE Notes, Videos & Tests.
10M+ students study on EduRev
Related Searches

practice quizzes

,

Page Replacement Algorithm - 2 | Operating System - Computer Science Engineering (CSE)

,

Viva Questions

,

Exam

,

Previous Year Questions with Solutions

,

past year papers

,

Summary

,

study material

,

ppt

,

Sample Paper

,

Page Replacement Algorithm - 2 | Operating System - Computer Science Engineering (CSE)

,

Important questions

,

Extra Questions

,

shortcuts and tricks

,

mock tests for examination

,

pdf

,

Free

,

Objective type Questions

,

video lectures

,

MCQs

,

Semester Notes

,

Page Replacement Algorithm - 2 | Operating System - Computer Science Engineering (CSE)

;