📄 6.c
字号:
main()
{
int k; /*标志进程是否运行完全*/
int x=1,y=1;
int s[1][4]; /*定义总资源*/
int allocation[5][4]; /*定义已占有的资源,有5个用户、4个资源*/
int need[5][4]; /*定义总的所需的资源*/
int available[5][4]; /*定义现有的资源*/
int claim[5][4]; /*定义还需要的资源*/
printf("请输入总资源 \n");
scanf("%d",&s[1][4]); /*输入总资源*/
printf("请输入总的所需资源 \n");
for(x=1;x<6;x++) /*输入总的所需资源*/
{
for(y=1;y<=4;y++)
scanf("%d",&need[x][y]);
}
printf("请输入已占有的资源 \n");
for(x=1;x<6;x++) /*输入已占有的资源*/
{
for(y=1;y<=4;y++)
scanf("%d",&allocation[x][y]);
}
for(x=1;x<6;x++)
{
for(y=1;y<=4;y++)
{
claim[x][y]=need[x][y]-allocation[x][y]; /*还需要的=总需要-已占有的*/
available[x][y]=s[1][y]-allocation[x][y];/*现有的=总资源-已占有的*/
}
}
for(y=1;y<=4;y++)
{
if(s[1][y]==0) /*如果总资源中有为0*/
{
for(x=1;x<6;x++)
{
claim[x][y]!=0; /*而且还需要的资源中有不为0*/
break; /*跳出循环*/
}
printf("\n 不安全 \n"); /*输出不安全*/
}
else /*如果总资源都不为0*/
{
for(x=1;x<6;x++)
{
if(claim[x][y]<=available[x][y]) /*如果还需要的小于等于现有的*/
{
available[x][y]=available[x][y]+need[x][y]; /*执行线程*/
printf("运行第 %d 行",x);
printf("第 %d 列 \n",y);
k++; /*k为是否运行完全的标志*/
}
else /*如果还需要的大于现有的*/
printf("\n不安全\n"); /*输出 不安全*/
}
if(k==20) /*如果完全运行完所有的进程*/
printf("\n 安全 \n"); /*输出 安全*/
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -