From 65ae335df019ad4934e43eaa378f8b568f815bd7 Mon Sep 17 00:00:00 2001 From: Priyam Das <32612003+dapriyam@users.noreply.github.com> Date: Fri, 18 Oct 2019 21:37:01 +0530 Subject: [PATCH] Create bankersalgo.c Program to implement Bankers algorithm in C --- bankersalgo.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 bankersalgo.c diff --git a/bankersalgo.c b/bankersalgo.c new file mode 100644 index 0000000..16beca6 --- /dev/null +++ b/bankersalgo.c @@ -0,0 +1,64 @@ +/ Banker's Algorithm +#include +int main() +{ + + + int n, m, i, j, k; + n = 5; // Number of processes + m = 3; // Number of resources + int alloc[5][3] = { { 0, 1, 0 }, + { 2, 0, 0 }, + { 3, 0, 2 }, + { 2, 1, 1 }, + { 0, 0, 2 } }; + + int max[5][3] = { { 7, 5, 3 }, + { 3, 2, 2 }, + { 9, 0, 2 }, + { 2, 2, 2 }, + { 4, 3, 3 } }; + + int avail[3] = { 3, 3, 2 }; // Available Resources + + int f[n], ans[n], ind = 0; + for (k = 0; k < n; k++) { + f[k] = 0; + } + int need[n][m]; + for (i = 0; i < n; i++) { + for (j = 0; j < m; j++) + need[i][j] = max[i][j] - alloc[i][j]; + } + int y = 0; + for (k = 0; k < 5; k++) { + for (i = 0; i < n; i++) { + if (f[i] == 0) { + + int flag = 0; + for (j = 0; j < m; j++) { + if (need[i][j] > avail[j]){ + flag = 1; + break; + } + } + + if (flag == 0) { + ans[ind++] = i; + for (y = 0; y < m; y++) + avail[y] += alloc[i][y]; + f[i] = 1; + } + } + } + } + + printf("Following is the SAFE Sequence\n"); + for (i = 0; i < n - 1; i++) + printf(" P%d ->", ans[i]); + printf(" P%d", ans[n - 1]); + + return (0); + + +}