死锁避免

2024 年 8 月 28 日 | 阅读 2 分钟

在死锁避免中,如果系统中的资源请求不会导致死锁,则该请求将被授予。系统状态将持续检查安全状态和不安全状态。

为了避免死锁,进程必须告知操作系统,完成其执行可能请求的最大资源数量。

最简单也是最有用的方法是,进程应声明它可能需要的每种类型资源的最大数量。死锁避免算法会检查资源分配情况,以确保永远不会出现循环等待条件。

安全状态和不安全状态

系统的资源分配状态可以由可用和已分配资源的实例,以及进程需求的资源的最大实例来定义。

下表显示了某个随机时间点记录的系统状态。

已分配资源

过程类型 1类型 2Type 3Type 4
A3022
B0011
C1110
D2140

仍需资源

过程类型 1类型 2Type 3Type 4
A1100
B0112
C1210
D2112


上述表格和向量 E、P 和 A 描述了系统的资源分配状态。系统中共有 4 个进程和 4 种资源。表 1 显示了分配给每个进程的每种资源的实例数量。

表 2 显示了每种资源,每个进程仍然需要的实例数量。向量 E 是系统中每种资源总实例数量的表示。

向量 P 表示已分配给进程的资源实例。向量 A 表示未使用的资源数量。

如果系统能够分配所有进程请求的所有资源而不进入死锁状态,则该系统状态称为安全状态。

如果系统无法满足所有进程的请求,则系统状态称为不安全状态。

死锁避免方法的核心是,当发出资源请求时,只有在结果状态也是安全状态的情况下,才能批准该请求。


下一主题资源分配图