You are on page 1of 3

#include<stdio.

h>
//#include<unistd.h>
main()
{
int n , m, i, j,k,f1=0,count=0;
int fin[5],avl[3],work[3], max[5][3], alloc[5][3], need[5][3];
printf("\nEnter no. of Processes & Resource type : ");
scanf("%d %d",&n,&m);
printf("\n Enter Availability of Resource types : ");
for(j=0; j<m; j++)
{
scanf(" %d",&avl[j]);
}
printf("\n\n Enter Allocation for each process : ");
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
scanf("%d",&alloc[i][j]);
}
}
printf("\n\n Enter Max for each process : ");
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
scanf("%d",&max[i][j]);
}
}

printf("\n\n Allocation ");


for(i=0; i<n; i++)
{
printf("\n");
for(j=0; j<m; j++)
{
printf(" %d ",alloc[i][j]);
}
}

printf("\n\n Max ");


for(i=0; i<n; i++)
{
printf("\n");
for(j=0; j<m; j++)
{
printf(" %d ",max[i][j]);
}
}
printf("\n\n Need ");
for(i=0; i<n; i++)
{
printf("\n");
for(j=0; j<m; j++)
{
need[i][j]=max[i][j]-alloc[i][j];
printf(" %d ",need[i][j]);
}
}
printf("\n\n Availabile ");
for(j=0; j<m; j++)
{
printf(" %d ",avl[j]);
}
printf("\n");

//------------------------------------for(i=0;i<n;i++)
{
fin[i]=0;
}
for(i=0;i<m;i++)
work[i]=avl[i];
printf("\n\n Saftey sequence \n");
while(1)
{
for(i=0;i<n;i++)
{
f1=0;
if(fin[i]==0 )
{

for(j=0;j<m;j++)
{
if( work[j]<need[i][j])
{
f1=1;
break;
}
else
f1=0;
}

if(f1==0)
{
for(k=0;k<m;k++)
{
fin[i]=1;
work[k]=work[k]+alloc[i][k];
}
printf("\tP%d",i);
count++;
}
}
}
if(count==n)
break;
}
}

You might also like