#include <stdio.h>
#include <stdlib.h>
int main(){
int init = 0;
int count = 1;
int L[5] = {0,0,0,0,0};
int Allocation[5][3] = {2,1,2,4,0,2,4,0,5,2,0,4,3,1,4};
int Need[5][3] = {3,4,7,1,3,4,0,0,6,2,2,1,1,1,0};
int Available[3] = {2,0,3};
//int Available[3] = {2,3,3};
printf("\n进程 alloc need avail\n");
printf(" A B C A B C A B C\n");
for(int pid = 0; pid < 5; pid++){
printf("%d ",pid);
for(int k = 0; k < 3; k++){
printf("%d ",Allocation[pid][k]);
}
printf(" ");
for(int k = 0; k < 3; k++){
printf("%d ",Need[pid][k]);
}
printf(" ");
if(init == 0){
for(int k = 0; k < 3; k++){
printf("%d ",Available[k]);
}
init = 1;
}
printf("\n");
}
int i;
int flag;
for (int n = 0; n < 5; n++)
{
for(i = 0; i < 5; i++){
for(int j = 0; j < 3; j++){
if(Need[i][j] <= Available[j] && L[i] == 0){
flag = 1;
}
else{
flag = 0;
break;
}
}
if(flag == 1){
L[i] = count;
for(int j = 0; j < 3;j++){
Available[j] = Available[j] + Allocation[i][j];
}
count++;
}
}
}
if(count <= 5){
printf("\n发生死锁!!\n");
printf("进程号 状态\n");
for(int j = 0; j < 5; j++){
printf("%d %d\n",j,L[j]);
}
}
else{
printf("\n没有发生死锁!!\n",count);
printf("进程号 状态\n");
for(int j = 0; j < 5; j++){
printf("%d %d\n",j,L[j]);
}
}
}
使用C语言编写一个程序,实现死锁检测算法。
最新推荐文章于 2022-09-26 21:10:50 发布