0% found this document useful (0 votes)
17 views4 pages

Prog 7

Uploaded by

Karthik
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views4 pages

Prog 7

Uploaded by

Karthik
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

#include <stdio.

h>

int max[100][100];
int alloc[100][100];
int need[100][100];
int avail[100];
int n, r;

void input();
void show();
void cal();

int main() {
printf("********** Banker's Algorithm ************\n");
input();
show();
cal();
printf("Press Enter to exit...");
getchar(); // Wait for the user to press Enter
return 0;
}

void input() {
int i, j;
printf("Enter the number of Processes: ");
scanf("%d", &n);
printf("Enter the number of resource instances: ");
scanf("%d", &r);

printf("Enter the Max Matrix:\n");


for (i = 0; i < n; i++) {
for (j = 0; j < r; j++) {
scanf("%d", &max[i][j]);
}********** Banker's Algorithm ************
Enter the number of Processes: 3
Enter the number of resource instances: 2
Enter the Max Matrix:
7 5
3 2
9 0
Enter the Allocation Matrix:
0 1
2 0
3 2
Enter the Available Resources:
0 1
Process Allocation Max Available
P1 0 1 7 5 0 1
P2 2 0 3 2
P3 3 2 9 0

P1 -> P2 ->
Processes are in deadlock.
The system is in an unsafe state.
Press Enter to exit...

printf("Enter the Allocation Matrix:\n");


for (i = 0; i < n; i++) {
for (j = 0; j < r; j++) {
scanf("%d", &alloc[i][j]);
}
}

printf("Enter the Available Resources:\n");


for (j = 0; j < r; j++) {
scanf("%d", &avail[j]);
}
}

void show() {
int i, j;
printf("Process\t Allocation\t Max\t Available\n");
for (i = 0; i < n; i++) {
printf("P%d\t ", i + 1);
for (j = 0; j < r; j++) {
printf("%d ", alloc[i][j]);
}
printf("\t");
for (j = 0; j < r; j++) {
printf("%d ", max[i][j]);
}
printf("\t");
if (i == 0) {
for (j = 0; j < r; j++) {
printf("%d ", avail[j]);
}
}
printf("\n");
}
}

void cal() {
int finish[100], k, flag = 1, c1 = 0;
int safe[100];
int i, j;

for (i = 0; i < n; i++) {


finish[i] = 0;
}

// Find need matrix


for (i = 0; i < n; i++) {
for (j = 0; j < r; j++) {
need[i][j] = max[i][j] - alloc[i][j];
}
}

printf("\n");

while (flag) {
flag = 0;
for (i = 0; i < n; i++) {
int c = 0;
for (j = 0; j < r; j++) {
if (finish[i] == 0 && need[i][j] <= avail[j]) {
c++;
}
}
if (c == r) {
for (k = 0; k < r; k++) {
avail[k] += alloc[i][k];
}
finish[i] = 1;
flag = 1;
printf("P%d -> ", i + 1);
}
}
}********** Banker's Algorithm ************
Enter the number of Processes: 3
Enter the number of resource instances: 2
Enter the Max Matrix:
7 5
3 2
9 0
Enter the Allocation Matrix:
0 1
2 0
3 2
Enter the Available Resources:
0 1
Process Allocation Max Available
P1 0 1 7 5 0 1
P2 2 0 3 2
P3 3 2 9 0

P1 -> P2 ->
Processes are in deadlock.
The system is in an unsafe state.
Press Enter to exit...

// Check if all processes are finished


for (i = 0; i < n; i++) {
if (finish[i] == 1) {
c1++;
} else {
printf("P%d -> ", i + 1);
}
}

if (c1 == n) {
printf("\nThe system is in a safe state.\n");
} else {
printf("\nProcesses are in deadlock.\n");
printf("The system is in an unsafe state.\n");
}
}
CASE 1:
********** Banker's Algorithm ************
Enter the number of Processes: 3
Enter the number of resource instances: 2
Enter the Max Matrix:
7 5
3 2
9 0
Enter the Allocation Matrix:
0 1
2 0
3 0
Enter the Available Resources:
3 3
Process Allocation Max Available
P1 0 1 7 5 3 3
P2 2 0 3 2
P3 3 0 9 0

P1 -> P2 -> P3 ->


The system is in a safe state.
Press Enter to exit...

CASE 2:
********** Banker's Algorithm ************
Enter the number of Processes: 3
Enter the number of resource instances: 2
Enter the Max Matrix:
7 5
3 2
9 0
Enter the Allocation Matrix:
0 1
2 0
3 2
Enter the Available Resources:
0 1
Process Allocation Max Available
P1 0 1 7 5 0 1
P2 2 0 3 2
P3 3 2 9 0

P1 -> P2 ->
Processes are in deadlock.
The system is in an unsafe state.
Press Enter to exit...

You might also like