📅  最后修改于: 2020-12-14 09:25:33             🧑  作者: Mango
在避免死锁的情况下,如果系统的结果状态未引起系统死锁,则将批准对任何资源的请求。将连续检查系统的状态是否存在安全和不安全状态。
为了避免死锁,该进程必须告知OS一个进程可以请求完成其执行的最大资源数量。
最简单,最有用的方法是,该过程应声明可能需要的每种类型的最大资源数。避免死锁算法会检查资源分配,以便永远不会出现循环等待条件。
安全与不安全国家
系统的资源分配状态可以通过可用资源和已分配资源的实例以及进程所需资源的最大实例来定义。
下面显示了在某个随机时间记录的系统状态。
Process | Type 1 | Type 2 | Type 3 | Type 4 |
---|---|---|---|---|
A | 3 | 0 | 2 | 2 |
B | 0 | 0 | 1 | 1 |
C | 1 | 1 | 1 | 0 |
D | 2 | 1 | 4 | 0 |
Process | Type 1 | Type 2 | Type 3 | Type 4 |
---|---|---|---|---|
A | 1 | 1 | 0 | 0 |
B | 0 | 1 | 1 | 2 |
C | 1 | 2 | 1 | 0 |
D | 2 | 1 | 1 | 2 |
E = (7 6 8 4)
P = (6 2 8 3)
A = (1 4 0 1)
上表和向量E,P和A描述了系统的资源分配状态。一个系统中有4个进程和4种类型的资源。表1显示了分配给每个进程的每个资源的实例。
表2显示了每个流程仍需要的资源实例。向量E是系统中每种资源的总实例的表示。
向量P代表已分配给进程的资源的实例。向量A表示未使用的资源数量。
如果系统可以分配所有进程所请求的所有资源而不会陷入死锁,则该系统的状态称为安全。
如果系统无法满足所有进程的请求,则系统状态称为不安全。
避免死锁方法的关键是,在请求资源时,只有在结果状态也是安全状态的情况下,才必须批准该请求。