1.银行家算法测试数据:
系统有5个进程(p0,p1,p2,p3,p4)和4类资源(A,B,C,D),在T0时刻的资源分配情况如下表所示:
试问:
(1)该状态是否安全?答:安全,安全序列为0 3 4 1 2
(2)如果进程P2提出请求Request2(1,2,2,2)后,系统能否将资源分配给它?
答:不能,分配给p2(1,2,2,2)后,Available还剩(0,4,0,0),这时候已经不能满足任何进程的,进入死锁状态
2.算法流程图:
3.源程序代码
#include<stdio.h>
#define resourceNum 4
#define processNum 5
//系统可用(剩余)资源
int available[resourceNum]={
1,6,2,2};
//进程的最大需求
int maxRequest[processNum][resourceNum]={
{
0,0,4,4},{
2,7,5,0},{
3,6,10,10},{
0,9,8,4},{
0,6,6,10}};
//进程已经占有(分配)资源
int allocation[processNum][resourceNum]={
{
0,0,3,2},{
1,0,0,0},{
1,3,5,4},{
0,3,3,2},{
0,0,1,4}};
//进程还需要资源
int need[processNum][resourceNum]={
{
0,0,1,2},{
1,7,5,0},{
2,3,5,6},{
0,6,5,2},{
0,6,5,6}};
//是否安全
bool Finish[processNum];
//安全序列号
int safeSeries[processNum]={
0,0,0,0,0};
//进程请求资源量
int request[resourceNum];
//资源数量计数
int num;
//打印输出系统信息
void showInfo()
{
printf("\n------------------------------------------------------------------------------------\n");
printf("当前系统各类资源剩余:");
for(