死锁是指多个进程因竞争资源而造成的一种互相等待的僵局,若无外力作用,这些进程都无法继续推进。
| 概念 | 定义 |
|---|---|
| 死锁 | 两个或多个进程互相等待对方持有的资源,导致都无法继续执行的状态 |
| 安全状态 | 存在一个安全序列,使所有进程都能顺利完成 |
| 安全序列 | 进程执行序列 $\langle P_1, P_2, \dots, P_n \rangle$,每个 $P_i$ 的剩余需求可用当前可用资源 + 所有 $P_j\,(j<i)$ 释放的资源满足 |
| 银行家算法 | 每次资源分配前检查系统是否仍处于安全状态,是则分配,否则拒绝 |
| 资源分配图 | 用有向图描述进程对资源的请求和资源的分配关系 |
| 死锁定理 | 资源分配图不可完全化简 $\iff$ 系统处于死锁状态 |
Available(可用资源向量)、Max(最大需求矩阵)、Allocation(分配矩阵)、Need(需求矩阵,$Need = Max - Allocation$)。圆圈表示进程,方框表示资源(圆点表示实例);请求边 $P \to R$,分配边 $R \to P$。无环则无死锁;有环则可能有死锁(每类资源仅一个实例时,有环即有死锁)。
| 考点 | 说明 |
|---|---|
| 死锁条件判断 | 给定场景判断是否满足四个必要条件 |
| 安全性检查 | 给定资源矩阵,判断系统是否安全,找出安全序列 |
| 银行家算法 | 判断某次资源请求是否应该批准 |
| 资源分配图化简 | 从图中判断是否存在死锁 |
| 死锁预防策略 | 给定场景选择合适的预防方法 |
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。