死锁处理策略学习卡片
- 两种结点:
- 进程结点:每个节点对应一个进程
- 资源结点:每个节点对应一类资源(矩形表示,内部小圆表示资源数量)
- 两种边:
- 请求边(进程→资源):表示进程申请几个资源(每条边对应一个资源)
- 分配边(资源→进程):表示已为进程分配几个资源(每条边对应一个资源)
- 核心思想:通过资源分配图的可完全简化性判断死锁
- 步骤:
- 找出既不阻塞又不是孤点的进程(即申请资源数≤可用资源数)
- 消去该进程所有请求边和分配边
- 重复上述过程直到无边可消
- 简化结果判定:
- 可完全简化:能消除所有边→无死锁(相当于找到安全序列)
- 不可完全简化:剩余边连接的进程即为死锁进程
- 定理内容:若某时刻系统的资源分配图不可完全简化,则系统发生死锁
- 应用示例:
- 图中P1可满足请求→消去P1边→P2被唤醒→最终可消去所有边→无死锁
- 修改后P1请求2个R2(已无空闲)→仅P3可执行→归还资源后仍无法满足P1/P2→死锁
- 资源剥夺法:
- 挂起部分死锁进程并抢占其资源
- 注意:需防止被挂起进程长时间饥饿
- 撤销进程法:
- 强制终止部分/全部死锁进程
- 缺点:已执行工作可能白费,代价较大
- 进程回退法:
- 回退进程到避免死锁的状态(需系统记录执行历史)
- 实现难点:需设置还原点
- 进程优先级(优先牺牲低优先级)
- 已执行时间(短时间进程优先)
- 剩余完成时间(接近完成的优先)
- 已占用资源量(持有资源多的优先)
- 进程类型(优先牺牲批处理式进程)