Code for first in first out as FIFO and Least Recently Used as LRU page replacement algorithm using structure in C programming with output | Operating System
Solution : In this C program for Operating System's algorithms as FIFO and LRU for page replacement, i have created serveral functions as follows :
void fifo() : This function uses First In First Out Algorithm to Fill the page frame frame[10]
void lru(): This function uses Least recently Used Algorithm to Fill page framel[10]
int leastrecent():This function will finding out leastrecent element in the framel[]
void display(int i):This function used to display elements in Page Frames with parameter i used to identify which frame to display in this program if i=0 then it will print fifo frame[] else lru framel[]
int check(int i,int c,int refindex): This function used to check coming elements from refs[i] as reference string is present in frame or not if it is then ignore .In this function i have taken 3 parameters first i used to identify the frame,c is element from refs[i],refindex used to identify last used index in case of LRU
void frameinitial(): This function used to initialize the frame[10] and framel[10] as both frames belongs to structure so we to initialize the value of its variables as ele=-1,lastused=0
Some of the Variable and arrays :
refs[100] : Holds reference string
refsize :Size of reference string
framesize :Size of frames
Code for fifo and lru page replacement algorithm
/* Program for Page Segmentation using FIFO LRU from Nullpointer.in*/
#include<stdio.h>
int refs[100],refsize,framesize;
void fifo();
void lru();
int leastrecent();
struct Frame
{
int lastused;
int ele;
};
void display(int i);
int check(int i,int c,int refindex);
struct Frame frame[10],framel[10];
void frameinitial()
{
int z;
for(z=0;z<10;z++)
{
frame[z].ele=-1;
framel[z].ele=-1;
frame[z].lastused=0;
framel[z].lastused=0;
}
}
int main()
{
printf("\nPlease Give Size for Reference String:-\n");
scanf("%d",&refsize);
printf("\nPlease Give Frame Size:-\n");
scanf("%d",&framesize);
frameinitial();
printf("\nPlease Enter Reference String:-");
int r;
for(r=0;r<refsize;r++)
{
scanf("%d",&refs[r]);
}
printf("\nPAGE FRAMES FOR FIFO PAGE REPLACEMENT:\n\n");
fifo();
printf("\n\nPAGE FRAMES FOR LRU PAGE REPLACEMENT:\n\n");
lru();
printf("\n");
return 0;
}
/* First in First Out Function's Logic */
void fifo()
{
int i,p;
p=0;
for(i=0;i<refsize;i++)
{
if(p==framesize)
{
p=0;
if(check(0,refs[i],i))
{
frame[p].ele=refs[i];
p++;
display(0);
}
}//run when frame become full
else
{
if(check(0,refs[i],i))
{
frame[p].ele=refs[i];
p++;
display(0);
}
}
}//exit for
}
void lru()
{
int i,p,l;
p=0;
for(i=0;i<refsize;i++)
{
if(p==framesize)
{
if(check(1,refs[i],i))
{
l=leastrecent();
framel[l].ele=refs[i];
framel[l].lastused=i;
display(1);
}
}//run when framel become full
else
{
if(check(1,refs[i],i))
{
framel[p].ele=refs[i];
framel[p].lastused=i;
p++;
display(1);
}
}
}//exit for
}
void display(int i)
{
int d;
if(i==0)
{
printf("[");
for(d=0;d<framesize;d++)
{
if(frame[d].ele==-1)
printf(" ");
else printf("%d",frame[d].ele);
if(d<framesize-1)
printf("|");
}
printf("] ");
}
else
{
printf("[");
for(d=0;d<framesize;d++)
{
if(framel[d].ele==-1)
printf(" ");
else printf("%d",framel[d].ele);
if(d<framesize-1)
printf("|");
}
printf("] ");
}
}
//Method to check Is element present or not
int check(int i,int c,int refindex)
{
int ck,flag;
flag=1;
if(i==0)
{
for(ck=0;ck<framesize;ck++)
{
if(frame[ck].ele==c)
{
flag=0;
break;
}
}
}
else
{
for(ck=0;ck<framesize;ck++)
{
if(framel[ck].ele==c)
{
framel[ck].lastused=refindex;
flag=0;
break;
}
}
}
return flag;
}
int leastrecent()
{
int i,min;
min=0;
for(i=0;i<framesize;i++)
{
if(framel[i].lastused<framel[min].lastused)
{
min=i;
}
}
return min;
}
Output of This Program is :-
Please Give Size for Reference String:- 8 Please Give Frame Size:- 3 Please Enter Reference String:-7 0 1 2 0 3 0 4 PAGE FRAMES FOR FIFO PAGE REPLACEMENT: [7| | ] [7|0| ] [7|0|1] [2|0|1] [2|3|1] [2|3|0] [4|3|0] PAGE FRAMES FOR LRU PAGE REPLACEMENT: [7| | ] [7|0| ] [7|0|1] [2|0|1] [2|0|3] [4|0|3]






0 comments:
Post a Comment