Program For Bankers Algorithm For Deadlock Avoidance in C
Program For Bankers Algorithm For Deadlock Avoidance in C
#include<stdio.h>
#include<conio.h>
void main()
{
int cl[10][10],al[10][10],av[10],i,j,k,m,n,ne[10][10],flag=0;
clrscr();
printf("\nEnter the matrix:");
scanf("%d %d",&m,&n);
printf("\nEnter the claim matrix:");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&cl[i][j]);
}
}
printf("\nEnter allocated matrix:");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&al[i][j]);
}
}
printf("\nThe need matrix:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
ne[i][j]=cl[i][j]-al[i][j];
printf("\t%d",ne[i][j]);
}
printf("\n");
}
printf("\nEnter avaliable matrix");
for(i=0;i<n;i++)
scanf("%d",&av[i]);
printf("Claim matrix:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("\t%d",cl[i][j]);
}
printf("\n");
}
printf("\n Allocated matrix:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("\t%d",al[i][j]);
}
printf("\n");
}
printf("Available matrix:\n");
for(i=0;i<n;i++)
{
printf("%d\t",av[i]);
}
//for(k=0;k<m;k++)
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(av[j]>=ne[i][j])
flag=1;
else
flag=0;
}
}
if(flag==0)
printf("Unsafe State");
else
printf("Safe State");
getch();
}
Output
Enter the Matrix:4
3
Enter the claim matrix:3 2 2 6
1331
4422
need[i][j]=max[i][j]-allocated[i][j];
}
}
Max
for(i=1;i<= pno;i++)
{
if(flag[i]==0)
{
prc=i;
for(j=1;j<= rno;j++)
{
if(work[j]< need[i][j])
{
prc=0;
break;
}
}
if(prc!=0)
break;
}
if(prc!=0)
{
printf("\n Process %d completed",i);
count++;
printf("\n Available matrix:");
for(j=1;j<= rno;j++)
{
work[j]+=allocated[prc][j];
allocated[prc][j]=0;
max[prc][j]=0;
flag[prc]=1;
printf("
%d",work[j]);
}
}
}while(count!=pno&&prc!=0);
need");
if(count==pno)
printf("\nThe system is in a safe state!!");
else
printf("\nThe system is in an unsafe state!!");
getch();
}
OUTPUT
Enter number of process:5
Enter number of resources:3
Enter total numbers of each resources:10 5 7
Enter Max resources for each process:
for process 1:7 5 3
for process 2:3 2 2
for process 3:9 0 2
for process 4:2 2 2
for process 5:4 3 3
Enter allocated resources for each process:
for process 1:0 1 0
for process 2:3 0 2
Allocated
0
1
3
0
3
0
2
1
0
0
Process 2
Available
Allocated
0
1
0
0
3
0
2
1
0
0
matrix
0|
7
5
2|
3
2
2|
9
0
1|
2
2
2|
4
3
completed
matrix:
5
matrix
0|
7
5
0|
0
0
2|
9
0
1|
2
2
2|
4
3
Process 4 completed
Available matrix:
7
Allocated matrix
0
1
0|
7
5
Max
3|
2|
2|
2|
3|
3
Max
3|
0|
2|
2|
3|
7
0
6
0
4
need
3
0
0
1
1
4
2
0
1
3
need
3
0
0
1
1
7
0
6
0
4
4
0
0
1
3
4
3
Max
3|
7
need
3
0
0
3
0
0
0
0
0
Process 1
Available
Allocated
0
0
0
0
3
0
0
0
0
0
Process 3
Available
Allocated
0
0
0
0
0
0
0
0
0
0
Process 5
Available
The system
0|
0
0
2|
9
0
0|
0
0
2|
4
3
completed
matrix:
7
matrix
0|
0
0
0|
0
0
2|
9
0
0|
0
0
2|
4
3
completed
matrix:
10
matrix
0|
0
0
0|
0
0
0|
0
0
0|
0
0
2|
4
3
completed
matrix:
10
is in a safe
0|
2|
0|
3|
0
6
0
4
5
Max
0|
0|
2|
0|
3|
5
Max
0|
0|
0|
0|
3|
0
0
0
3
0
0
0
1
need
0
0
0
0
1
0
0
6
0
4
0
0
0
0
3
5
0
0
0
0
4
5
7
state!!
need
0
0
0
0
1
0
0
0
0
3