Friday 22 April 2016

Banker Algorithms

#include<stdio.h>
#include<conio.h>
int main()
{
int a[10][10],b[10][10],c[10][10],e[10],i,j,k,l,total[10],s=0,f[10],p[10],count=0,po=1,count1=0,n1,n2;
printf("Number of Process:-");
scanf("%d",&n1);
printf("Number of Resource:-");
scanf("%d",&n2);
for(i=0;i<n2;i++)
{
printf("Resource %d:-",i+1);
scanf("%d",&total[i]);
}
printf("Maximum:-\n");
for(i=0;i<n1;i++)
{
for(j=0;j<n2;j++)
{
scanf("%d",&a[i][j]);
}
p[i]=i;
}
printf("Allocation:-\n");
for(i=0;i<n1;i++)
{
for(j=0;j<n2;j++)
{
scanf("%d",&b[i][j]);
}
}
printf("Need:-\n");
for(i=0;i<n1;i++)
{
for(j=0;j<n2;j++)
{
c[i][j]=a[i][j]-b[i][j];
printf("%d  ",c[i][j]);
}
printf("\n");
}
for(i=0;i<n2;i++)
{
for(j=0;j<n1;j++)
{
s=s+b[j][i];
}
e[i]=s;
s=0;
}
    for(i=0;i<n2;i++)
f[i]=total[i]-e[i];
i=0;
kl:
po=1;
for(j=0;j<n2&&p[i]!=900;j++)
{
if(c[i][j]<=f[j])
{
count++;
}
else
break;
}
if(count==n2)
{
for(k=0;k<n2;k++)
{
f[k]+=b[i][k];
}
printf("Sequence-%d\n",p[i]);
p[i]=900;
po=0;
}
count=0;
if(po==0)
i=0;
else
i++;
if(i!=n1)
goto kl;
for(i=0;i<n1;i++)
{
if(p[i]==900)
count1++;
}
if(count1==n1)
printf("\n\nSafe State\n");
else
printf("Unsafe State\n");
getch();
}

No comments:

Post a Comment