1. 银行家算法
介绍
- 银行家算法是最具代表性的避免死锁的算法,允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态则分配,否则等待。
银行家算法中四个数据结构
-
可利用资源向量 Available
长度为m的向量,如果 Available[j] = K,则表示系统中资源R(j)现在有K个;
-
最大需求矩阵 Max
是一个n x m的矩阵,定义系统中n个进程中的每个进程对m类资源的 最大需求,如果Max[i,j] = K,则表示进程i需要资源R(j)的最大数目为K;
-
分配矩阵 Allocation
一个n x m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果 Allocation[i,j]= K,则表示进程i当前已分得资源R(j)的数目为K;
-
需求矩阵 Need
一个n×m的矩阵,用以表示每一个进程尚需的各类资源数。如果Need[i,j] = K,则表示进程i还需要资源R(j)的个数为k。
1.1 安全性算法
安全性算法的步骤
-
通过Max - Alloca