1、 设置数据结构
包括可利用资源向量(Availiable),最大需求矩阵(Max),分配矩阵(Allocation),需求矩阵(Need)
2、 设计安全性算法
设置工作向量Work 表示系统可提供进程继续运行可利用资源数目,Finish 表示系统是否有足够的资源分配给进程
(三) 实验环境
1、 pc
2、 vc++
(四)、程序部分源代码:
注意:提供的代码仅供参考,可能会影响大家的思路,可以不采用。
/*子函数声明*/
intIsprocessallover(); //判断系统中的进程是否全部运行完毕
voidSystemstatus(); //显示当前系统中的资源及进程情况
intBanker(int ,int *); //银行家算法
voidAllow(int ,int *); //若进程申请不导致死锁,用此函数分配资源
voidForbidenseason(int ); //若发生死锁,则显示原因
/*全局变量*/
intAvailiable[3]={3,3,2}; //当前状态,系统可用资源量
intMax[5][3]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}}; //各进程对各资源的最大需求量
intAllocation[5][3]={{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}}; //初始状态,各进程占有资源量
intNeed[5][3]={{7,4,3},{1,2,2},{6,0,0},{0,1,1},{4,3,1}}; //初始状态时,各进程运行完毕,还需要的资源量
int over[5]={0,0,0,0,0}; //标记对应进程是否得到所有资源并运行完毕