0% found this document useful (0 votes)
232 views5 pages

Bankers Algorithm For Deadlock Avoidance

The C program simulates the Banker's Algorithm for deadlock avoidance. It takes input for the number of processes and resources, allocated resources for each process, maximum resources needed by each process, and available resources. It then calculates the remaining need for each process and checks if the system is in a safe state, where resources requested by the next process are available, or in an unsafe state.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
232 views5 pages

Bankers Algorithm For Deadlock Avoidance

The C program simulates the Banker's Algorithm for deadlock avoidance. It takes input for the number of processes and resources, allocated resources for each process, maximum resources needed by each process, and available resources. It then calculates the remaining need for each process and checks if the system is in a safe state, where resources requested by the next process are available, or in an unsafe state.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 5

Write a C program to simulate Bankers Algorithm for Deadlock Avoidance

#include<stdio.h>

int main ()

int allocated[15][15], max[15][15], need[15][15], avail[15], tres[15],

work[15], flag[15];

int pno, rno, i, j, prc, count, t, total;

count = 0;

//clrscr ();

printf ("\n Enter number of process:");

scanf ("%d", &pno);

printf ("\n Enter number of resources:");

scanf ("%d", &rno);

for (i = 1; i <= pno; i++)

flag[i] = 0;

printf ("\n Enter total numbers of each resources:");

for (i = 1; i <= rno; i++)

scanf ("%d", &tres[i]);

printf ("\n Enter Max resources for each process:");

for (i = 1; i <= pno; i++)

printf ("\n for process %d:", i);


for (j = 1; j <= rno; j++)

scanf ("%d", &max[i][j]);

printf ("\n Enter allocated resources for each process:");

for (i = 1; i <= pno; i++)

printf ("\n for process %d:", i);

for (j = 1; j <= rno; j++)

scanf ("%d", &allocated[i][j]);

printf ("\n available resources:\n");

for (j = 1; j <= rno; j++)

avail[j] = 0;

total = 0;

for (i = 1; i <= pno; i++)

total += allocated[i][j];

avail[j] = tres[j] - total;

work[j] = avail[j];

printf (" %d \t", work[j]);

do

{
for (i = 1; i <= pno; i++)

for (j = 1; j <= rno; j++)

need[i][j] = max[i][j] - allocated[i][j];

printf ("\n Allocated matrix Max need");

for (i = 1; i <= pno; i++)

printf ("\n");

for (j = 1; j <= rno; j++)

printf ("%4d", allocated[i][j]);

printf ("|");

for (j = 1; j <= rno; j++)

printf ("%4d", max[i][j]);

printf ("|");

for (j = 1; j <= rno; j++)

printf ("%4d", need[i][j]);

}
}

prc = 0;

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);

if (count == pno)

printf ("\nThe system is in a safe state!!");

else

printf ("\nThe system is in an unsafe state!!");

return 0;

You might also like