Paging is a memory management scheme that eliminates the need for contiguous allocation of physical memory. This scheme permits the physical address space of a process to be non – contiguous. Given below is one of the page replacement algorithm program, you are to first identify which algorithm (FIFO, Optimal Page Replacement, Least frequently used) is implemented in given c-code. Please consider following reference string for this page replacement algorithm(1,2,3 5,1,3,4,5,6,1,5,3,2) with 4 page/frame size. There are some errors in this program, you have to correct it first, and then explain compiled output with each miss or hit condition.
Paging is a memory management scheme that eliminates the need for contiguous allocation of physical memory. This scheme permits the physical address space of a process to be non – contiguous.
Given below is one of the page replacement
There are some errors in this program, you have to correct it first, and then explain compiled output with each miss or hit condition.
Note: Show complete procedure with detail steps/screenshots with your arid number.
|
|
|
#include <stdio.h> |
void main() |
|
{ |
|
intpos,c,m,maxi,i,k,nf,count,j=0,pf=0,np=0; |
|
printf("enter no. of pages"); |
|
scanf("%d",&np); |
|
int s[np]; |
|
printf("Enter pages sequence :\n"); |
|
for(i=0;i<np;i++) |
|
scanf("%d",&s[i]); |
|
printf("enter the no. of frames"); |
|
scanf("%d",&nf); |
|
int q[nf],q1[nf]; |
|
for(i=0;i<nf;i++) |
|
q[i]=-1; |
|
for(i=0;i<np;i++) |
|
{maxi=0; |
|
for(m=0;m<nf;m++) |
|
q1[m]=-1; |
|
c=0; |
|
for(k=0,k<nf;k++) |
|
if(s[i]==q[k]) |
|
c++; |
|
if(c==0) |
|
{ |
|
if(q[nf-1]==-1) |
|
{ |
|
q[j]=s[i]; |
|
pf++; |
|
j++; |
|
for(k=0;k<nf;k++) |
|
printf("%d\t",q[k]); |
|
printf("-> %d\n",pf); |
|
} |
|
else { |
|
for(j=0;j<nf;i++){ |
|
for(m=i+1,count=0;m<np;m++,count++) |
|
if(q[j]==s[m] && q1[j]==-1) |
|
q1[j]=count; |
|
if(q1[j]==-1){ |
|
for(m=0;m<i;m++,count++) |
|
if(q[j]==s[m] && q1[j]==-1) |
|
q1[j]=count; |
|
} |
|
} |
|
for(m=0;m<nf;m++) |
|
if(q1[m]>maxi){ |
|
maxi=q1[m]; |
|
pos=m;} |
|
q[pos]=s[i];pf++; |
|
for(m=0;m<nf;m++) |
|
printf("%d ",q[m]); |
|
printf("-> %d\n",pf); |
|
|
|
|
|
|
|
} |
|
}printf("the total no. of page faults are: %d",pf); |
|
} |
Step by step
Solved in 4 steps with 3 images