//定义用于将分配给某个进程的资源回收的函数
int restore();
//银行家算法,用于判断当此时系统中有进程申请系统资源时能不能将其所申请的资源分配给他
void banker();
//用于记录此时是那个进程请求系统为其分配资源
int requestProcess;
//用于记录进程所请求的各种系统资源的数目
int request[RESOURCE_NUM];
int main()
{
initialize();
//打印当前系统的资源分配情况
outAllocation();
printf("\n\n");
banker();
printf("\n\n");
//执行银行家算法之后由于可能给某个进程分配了资源,于是再次打印系统目前的资源分配清苦
outAllocation();
return 0;
}
void solveNeeds()
{
for (int i = 0; i < PROCESS_NUM; i++)
{
for (int j = 0; j < RESOURCE_NUM; j++)
{
stillNeeds[i][j] = maxNeeds[i][j] - allocation[i][j];
}
}
}
void solveAvailable()
{
for (int i = 0; i < RESOURCE_NUM; i++)
{
available[i] = maxResource[i];
}
for (int j = 0; j < RESOURCE_NUM; j++) //j表示列
{
for (int i = 0; i < PROCESS_NUM; i++) //i表示行
{
available[j] -= allocation[i][j];
}
}
}
void initialize()
{
//初始化系统中各个资源的数量
printf(“请输入系统中各种资源的数量:\n”);
for (int i = 0; i < RESOURCE_NUM; i++)
{
scanf(“%d”, &maxResource[i]);
}
//初始化各个进程对系统中各个资源的最大需求量
for (int i = 0; i < PROCESS_NUM; i++)
{
printf("请输入进程%d对系统中各种资源的最大需求量:\n", i);
for (int j = 0; j < RESOURCE_NUM; j++)
{
scanf("%d", &maxNeeds[i][j]);
}
}
//初始化allocation矩阵
for (int i