Here you will get program for banker’s algorithm in C.
The banker’s algorithm which is also known as avoidance algorithm is a deadlock detection algorithm. It was developed by Edsger Dijkstra. It is designed to check the safe state whenever a resource is requested. It takes analogy of bank, where customer request to withdraw cash. Based on some data the cash is lent to the customer. The banker can’t give more cash than what the customer has requested for, and the total available cash. As this algorithm uses bank analogy so named as banker’s algorithm
The basic data structures used to implement this algorithm are given below.
Let n be the total number of processes and m be the total number of resource types in the system.
Available: A vector of length m. It shows number of available resources of each type. If Available[i] = k, then k instances of resource Ri are available.
Max: An n×m matrix that contain maximum demand of each process. If Max[i,j] = k, then process Pi can request maximum k instances of resource type Rj.
Allocation: An n×m matrix that contain number of resources of each type currently allocated to each process. If Allocation[i,j] = k, then Pi is currently allocated k instances of resource type Rj.
Need: An n×m matrix that shows the remaining resource need of each process. If Need[i,j] = k, then process Pi may need k more instances of resource type Rj to complete the task.
Program for Banker’s Algorithm in C
#include <stdio.h> int current[5][5], maximum_claim[5][5], available[5]; int allocation[5] = {0, 0, 0, 0, 0}; int maxres[5], running[5], safe = 0; int counter = 0, i, j, exec, resources, processes, k = 1; int main() { printf("\nEnter number of processes: "); scanf("%d", &processes); for (i = 0; i < processes; i++) { running[i] = 1; counter++; } printf("\nEnter number of resources: "); scanf("%d", &resources); printf("\nEnter Claim Vector:"); for (i = 0; i < resources; i++) { scanf("%d", &maxres[i]); } printf("\nEnter Allocated Resource Table:\n"); for (i = 0; i < processes; i++) { for(j = 0; j < resources; j++) { scanf("%d", ¤t[i][j]); } } printf("\nEnter Maximum Claim Table:\n"); for (i = 0; i < processes; i++) { for(j = 0; j < resources; j++) { scanf("%d", &maximum_claim[i][j]); } } printf("\nThe Claim Vector is: "); for (i = 0; i < resources; i++) { printf("\t%d", maxres[i]); } printf("\nThe Allocated Resource Table:\n"); for (i = 0; i < processes; i++) { for (j = 0; j < resources; j++) { printf("\t%d", current[i][j]); } printf("\n"); } printf("\nThe Maximum Claim Table:\n"); for (i = 0; i < processes; i++) { for (j = 0; j < resources; j++) { printf("\t%d", maximum_claim[i][j]); } printf("\n"); } for (i = 0; i < processes; i++) { for (j = 0; j < resources; j++) { allocation[j] += current[i][j]; } } printf("\nAllocated resources:"); for (i = 0; i < resources; i++) { printf("\t%d", allocation[i]); } for (i = 0; i < resources; i++) { available[i] = maxres[i] - allocation[i]; } printf("\nAvailable resources:"); for (i = 0; i < resources; i++) { printf("\t%d", available[i]); } printf("\n"); while (counter != 0) { safe = 0; for (i = 0; i < processes; i++) { if (running[i]) { exec = 1; for (j = 0; j < resources; j++) { if (maximum_claim[i][j] - current[i][j] > available[j]) { exec = 0; break; } } if (exec) { printf("\nProcess%d is executing\n", i + 1); running[i] = 0; counter--; safe = 1; for (j = 0; j < resources; j++) { available[j] += current[i][j]; } break; } } } if (!safe) { printf("\nThe processes are in unsafe state.\n"); break; } else { printf("\nThe process is in safe state"); printf("\nAvailable vector:"); for (i = 0; i < resources; i++) { printf("\t%d", available[i]); } printf("\n"); } } return 0; }
If you found anything incorrect in above program for banker’s algorithm in C then comment below.
Great one, I found this blog lovable since I discovered it.
🙂 Good .. Its Deadlock
Really great post nice work i love your work and its really helped me in my research. Thanks…………………………….
Can you explain this code just a little bit,.It works…
its easy u can learn by uarSelf
output snap plzz
Your all operating system codes are simple & easy to understand and especially your programs are all well executable and thanks for your work and keep doing it bro….
thanks a lot for your kind words 🙂
This code is not true in all possible cases because once go through all process it(code) does not again check the remaining process (that are not executed). There is the possibility of their execution with new AVAILABLE DATA.
please recheck it.
show the output below the program.
plz
What is a claim vector?
Please show the output
I think you should include comments alongside the code statements to make it more understandable
definitely
I think you should include comments alongside the code statements to make it more understandable
Now there are even professional and unprofessional blogers?
THANK YOU AND PLZ GIVE
OUT PUT ALSO
You are the best i could say bro..!!!!!!!!!
Thanks for all the info..
please provide the output,what is claim vector??
please provide the output what is claim vector
???????????
the level is too low for programming
what is mean by claim vector
Where is the coding after 136 line??..why it is not shown to me??
because u hv not weared specs
Check again Darling!
i am wearing specs but i cant see anything ,anyways thankyou so much DARLING!!! with LOVE take care BYE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Awesome,best etc. blog site for having OS stuff.
Please provide the output for the program so that it becomes more clear to understand
pls give comments in ur program .. it will be helpfull to understand the flow of code.. n metion out put screen for program
actually it is good for only safe condition but not work for unsafe condition as in unsafe condition count value cannot be zero and while loop cannot be finished until count value is zero thus it undergoes infinite loop. please recheck it…
what is claim vector bro
how to import resources
Thank you so much to share i was searching for this program from last 2 days but got it here!
thank you so much to share this Program…