program to implement Least recently used page replacement policy for an operating system

0

write a program to implement Least recently used page replacement policy for an operating system in programming languages like C,C++,PYTHON,JAVA etc

Answered question
0

#include<stdio.h>
#include <stdlib.h>
 int n,nf;
int in[100];
int p[50];
int hit=0;
int i,j,k;
int pg_fault_cnt=0;
 //Reference String input function
void getData()
{
    printf("Enter length of page reference sequence:\n");
    scanf("%d",&n);
    printf("Enter the page reference sequence:\n");
    for(i=0; i<n; i++)
        scanf("%d",&in[i]);
    printf("Enter no of frames:\n");
    scanf("%d",&nf);
}
 void initialize()
{
    pg_fault_cnt=0;
    for(i=0; i<nf; i++)
        p[i]=9999;
}
 int isHit(int data)
{
    hit=0;
    for(j=0; j<nf; j++)
    {
        if(p[j]==data)
        {
            hit=1;
            break;
        }
     }
    return hit;
}
/*
int getHitIndex(int data)
{
    int hit_ind=0;
    for(k=0; k<nf; k++)
    {
        if(p[k]==data)
        {
            hit_ind=k;
            break;
        }
    }
    return hit_ind;
}*/
 void display_Pages()
{
    for (k=0; k<nf; k++)
    {
        if(p[k]!=9999)
            printf(" %d",p[k]);
    }
}
//Display to  number of page fault value
void display_Page_Fault_Cnt()
{
    printf("Total no of page faults:%d\n",pg_fault_cnt);
}
 void lru()
{
    initialize();
     int least[50];
    for(i=0; i<n; i++)
    {
         printf("\nFor %d :",in[i]);
         if(isHit(in[i])==0)
        {
             for(j=0; j<nf; j++)
            {
                int pg=p[j];
                int found=0;
                for(k=i-1; k>=0; k--)
                {
                    if(pg==in[k])
                    {
                        least[j]=k;
                        found=1;
                        break;
                    }
                    else
                        found=0;
                }
                if(!found)
                    least[j]=-9999;
            }
            int min=9999;
            int replace_index=0;
            for(j=0; j<nf; j++)
            {
                if(least[j]<min)
                {
                    min=least[j];
                    replace_index=j;
                }
            }
            p[replace_index]=in[i];
            pg_fault_cnt++;
             display_Pages();
        }
        else
            printf("No page fault!\n");
    }
    display_Page_Fault_Cnt();
}
 int main()
{
 getData();
 lru();
return 0;
}

Answered question
You are viewing 1 out of 1 answers, click here to view all answers.