Files
sp-lab/6.c
T
2026-05-14 08:02:24 +05:30

76 lines
1.7 KiB
C

#include <stdio.h>
#define MAX 10
int main() {
int n, r;
printf("Enter number of processes: ");
scanf("%d", &n);
printf("Enter number of resources: ");
scanf("%d", &r);
int alloc[MAX][MAX], max[MAX][MAX], need[MAX][MAX];
int avail[MAX], finish[MAX] = {0};
int safeSeq[MAX];
printf("Enter Allocation matrix:\n");
for (int i = 0; i < n; i++)
for (int j = 0; j < r; j++)
scanf("%d", &alloc[i][j]);
printf("Enter Max matrix:\n");
for (int i = 0; i < n; i++)
for (int j = 0; j < r; j++)
scanf("%d", &max[i][j]);
printf("Enter Available resources:\n");
for (int j = 0; j < r; j++)
scanf("%d", &avail[j]);
for (int i = 0; i < n; i++)
for (int j = 0; j < r; j++)
need[i][j] = max[i][j] - alloc[i][j];
int count = 0;
while (count < n) {
int found = 0;
for (int i = 0; i < n; i++) {
if (finish[i]) continue;
int ok = 1;
for (int j = 0; j < r; j++) {
if (need[i][j] > avail[j]) {
ok = 0;
break;
}
}
if (ok) {
for (int j = 0; j < r; j++)
avail[j] += alloc[i][j];
finish[i] = 1;
safeSeq[count++] = i;
found = 1;
}
}
if (!found) break;
}
if (count == n) {
printf("\nSystem is in SAFE state\n");
printf("Safe sequence: ");
for (int i = 0; i < n; i++)
printf("P%d ", safeSeq[i]);
printf("\n");
} else {
printf("\nSystem is in UNSAFE state (Deadlock possible)\n");
}
return 0;
}