#include< stdio.h>
#include< conio.h>
int fsize;
int frm[15];
void display();
void main()
{
int pg[100],change[15],nPage,i,j,k,l,index,pf=0,temp,flag=0,flag1=0,found,max;
clrscr();
printf("\n Enter frame size:");
scanf("%d",&fsize);
printf("\n Enter number of pages:");
scanf("%d",&nPage);
for(i=0;i< nPage;i++)
{
printf("\n Enter page[%d]:",i+1);
scanf("%d",&pg[i]);
}
for(i=0;i< fsize;i++)
frm[i]=-1;
printf("\n page | \t Frame content ");
printf("\n--------------------------------------");
for(j=0;j< nPage;j++)
{
flag=0;
flag1=0;
for(i=0;i< fsize;i++)
{
if(frm[i]==pg[j])
{
flag=1;
flag1=1;
break;
}
}
if(flag==0)
{
for(i=0;i< fsize;i++)
{
if(frm[i]==-1)
{
frm[i]=pg[j];
pf++;
flag1=1;
break;
}
}
}
if(flag1==0)
{
for(i=0;i< fsize;i++)
change[i]=0;
for(i=0;i< fsize;i++)
{
for(k=j+1;l< =nPage;k++)
{
if(frm[i]==pg[k])
{
change[i]=k-j;
break;
}
}
}
found=0;
for(i=0;i< fsize;i++)
{
if(change[i]==0)
{
index=i;
found=0;
break;
}
}
if(found==0)
{
max=change[0];
index=0;
for(i=1;i< fsize;i++)
{
if(max< change[i])
{
max=change
[i];
index=i;
}
}
}
frm[index]=pg[j];
pf++;
}
printf("\n %d |",pg[j]);
display();
}
printf("\n--------------------------------------");
printf("\n total page fault:%d",pf);
getch();
}
void display()
{
int i;
for(i=0;i< fsize;i++)
printf("\t %d",frm[i]);
}
OUTPUT
Enter frame size:3
Enter number of pages:12
Enter page[1]:1
Enter page[2]:2
Enter page[3]:3
Enter page[4]:4
Enter page[5]:1
Enter page[6]:2
Enter page[7]:5
Enter page[8]:1
Enter page[9]:2
Enter page[10]:3
Enter page[11]:4
Enter page[12]:5
page | Frame content
--------------------------------------
1 | 1 -1 -1
2 | 1 2 -1
3 | 1 2 3
4 | 1 2 4
1 | 1 2 4
2 | 1 2 4
5 | 1 2 5
1 | 1 2 5
2 | 1 2 5
3 | 3 2 5
4 | 4 2 5
5 | 4 2 5
--------------------------------------
total page fault:7
#include< conio.h>
int fsize;
int frm[15];
void display();
void main()
{
int pg[100],change[15],nPage,i,j,k,l,index,pf=0,temp,flag=0,flag1=0,found,max;
clrscr();
printf("\n Enter frame size:");
scanf("%d",&fsize);
printf("\n Enter number of pages:");
scanf("%d",&nPage);
for(i=0;i< nPage;i++)
{
printf("\n Enter page[%d]:",i+1);
scanf("%d",&pg[i]);
}
for(i=0;i< fsize;i++)
frm[i]=-1;
printf("\n page | \t Frame content ");
printf("\n--------------------------------------");
for(j=0;j< nPage;j++)
{
flag=0;
flag1=0;
for(i=0;i< fsize;i++)
{
if(frm[i]==pg[j])
{
flag=1;
flag1=1;
break;
}
}
if(flag==0)
{
for(i=0;i< fsize;i++)
{
if(frm[i]==-1)
{
frm[i]=pg[j];
pf++;
flag1=1;
break;
}
}
}
if(flag1==0)
{
for(i=0;i< fsize;i++)
change[i]=0;
for(i=0;i< fsize;i++)
{
for(k=j+1;l< =nPage;k++)
{
if(frm[i]==pg[k])
{
change[i]=k-j;
break;
}
}
}
found=0;
for(i=0;i< fsize;i++)
{
if(change[i]==0)
{
index=i;
found=0;
break;
}
}
if(found==0)
{
max=change[0];
index=0;
for(i=1;i< fsize;i++)
{
if(max< change[i])
{
max=change
[i];
index=i;
}
}
}
frm[index]=pg[j];
pf++;
}
printf("\n %d |",pg[j]);
display();
}
printf("\n--------------------------------------");
printf("\n total page fault:%d",pf);
getch();
}
void display()
{
int i;
for(i=0;i< fsize;i++)
printf("\t %d",frm[i]);
}
OUTPUT
Enter frame size:3
Enter number of pages:12
Enter page[1]:1
Enter page[2]:2
Enter page[3]:3
Enter page[4]:4
Enter page[5]:1
Enter page[6]:2
Enter page[7]:5
Enter page[8]:1
Enter page[9]:2
Enter page[10]:3
Enter page[11]:4
Enter page[12]:5
page | Frame content
--------------------------------------
1 | 1 -1 -1
2 | 1 2 -1
3 | 1 2 3
4 | 1 2 4
1 | 1 2 4
2 | 1 2 4
5 | 1 2 5
1 | 1 2 5
2 | 1 2 5
3 | 3 2 5
4 | 4 2 5
5 | 4 2 5
--------------------------------------
total page fault:7