银行家算法是属于死锁避免的算法。
银行家算法思想:允许用户分批申请资源,每次分配之前,都要检查是否安全。
银行家算法数据结构:
- 系统中总的资源,对应可利用资源向量Available
- 进程运行所需资源,对应最大需求矩阵Max
- 已经分配的资源数P,对应分配矩阵Allocation
- 还需要申请的资源数R,对应需求矩阵Need
对应关系:Need=Max-Allocation
银行家算法的算法过程:
准备:计算系统中的剩余资源F;计算进程请求资源R
- 找到一个进程Pi,满足Ri<=F
- 如果找到这样的进程,则将F=F+Pi
- 继续(1)
- 如果找不到一个进程,满足:F>=Pi,则说明系统安全
- 若所有系统进程都能够运行结束,则系统安全