fork download
  1. #include <stdio.h>
  2.  
  3. int main() {
  4. int n, r;
  5. printf("Enter number of processes: ");
  6. scanf("%d", &n);
  7. printf("Enter number of resource types: ");
  8. scanf("%d", &r);
  9.  
  10. int max[n][r], alloc[n][r], need[n][r], avail[r];
  11. int finish[n], i, j, k;
  12.  
  13. // Input Max matrix
  14. printf("Enter Max matrix:\n");
  15. for (i = 0; i < n; i++)
  16. for (j = 0; j < r; j++)
  17. scanf("%d", &max[i][j]);
  18.  
  19. // Input Allocation matrix
  20. printf("Enter Allocation matrix:\n");
  21. for (i = 0; i < n; i++)
  22. for (j = 0; j < r; j++)
  23. scanf("%d", &alloc[i][j]);
  24.  
  25. // Input Available resources
  26. printf("Enter Available resources:\n");
  27. for (j = 0; j < r; j++)
  28. scanf("%d", &avail[j]);
  29.  
  30. // Calculate Need matrix = Max - Allocation
  31. for (i = 0; i < n; i++)
  32. for (j = 0; j < r; j++)
  33. need[i][j] = max[i][j] - alloc[i][j];
  34.  
  35. // Initialize all processes as not finished
  36. for (i = 0; i < n; i++)
  37. finish[i] = 0;
  38.  
  39. int done;
  40. do {
  41. done = 0;
  42. for (i = 0; i < n; i++) {
  43. if (finish[i] == 0) {
  44. int canRun = 1;
  45. for (j = 0; j < r; j++) {
  46. if (need[i][j] > avail[j]) {
  47. canRun = 0;
  48. break;
  49. }
  50. }
  51. if (canRun) {
  52. for (j = 0; j < r; j++)
  53. avail[j] += alloc[i][j];
  54. finish[i] = 1;
  55. done = 1;
  56. }
  57. }
  58. }
  59. } while (done);
  60.  
  61. // Check for deadlock
  62. int deadlock = 0;
  63. for (i = 0; i < n; i++) {
  64. if (finish[i] == 0) {
  65. printf("Process P%d is in deadlock.\n", i);
  66. deadlock = 1;
  67. }
  68. }
  69.  
  70. if (!deadlock)
  71. printf("No deadlock detected. System is in a safe state.\n");
  72.  
  73. return 0;
  74. }
Success #stdin #stdout 0.01s 5320KB
stdin
Standard input is empty
stdout
Enter number of processes: Enter number of resource types: Enter Max matrix:
Enter Allocation matrix:
Enter Available resources:
No deadlock detected. System is in a safe state.