2.5 进程资源图
本课核心知识点整理
本节导学
死锁资源数公式适合同类资源的抽象计算;进程资源图则适合描述一个具体时刻系统中“谁占有资源、谁还在申请资源”。字幕强调,资源图是某个时刻的静态状态图,要先看清节点、边和资源实例数,再判断是否能继续分配、能否化简。
这类题最容易犯的错是看到环就直接判死锁。只有每类资源都是单实例时,有环通常意味着死锁;多实例资源图中,有环不一定死锁,必须通过化简判断。
图中元素的含义
| 图形元素 | 含义 |
|---|---|
| 进程节点 | 表示一个进程,常写作 P1、P2 等 |
| 资源节点 | 表示一类资源,节点内小圆点个数表示资源实例总数 |
| 进程 -> 资源 | 申请边,表示进程正在申请某资源 |
| 资源 -> 进程 | 分配边,表示资源实例已经分配给该进程 |
一条边通常表示一个资源实例的申请或分配。判断时先统计资源总数,再减去已经分配出去的数量,得到当前可用资源数。
化简法判断死锁
化简法的核心是模拟“如果某个进程的申请能被满足,它就可以运行完成,随后释放自己占有的资源”。步骤如下:
- 计算每类资源当前剩余可用数。
- 找到申请需求能够被当前可用资源满足的进程。
- 假设该进程完成,删除它相关的申请边和分配边。
- 把它原来占有的资源释放回可用资源集合。
- 重复以上过程,直到所有进程都被化简,或再也找不到可化简进程。
如果所有进程都能化简,说明系统可以找到一条完成序列,无死锁;如果最后剩下一组进程互相等待且无法化简,说明存在死锁风险或已经死锁。
为什么有环不一定死锁
单实例资源图中,环表示每个进程都在等环上另一个进程占有的唯一资源,因此通常可判死锁。多实例资源图中,即使存在等待环,系统可能还有额外实例能满足某个进程;只要某个进程能先完成并释放资源,环就可能被打破。
因此,资源图题的可靠做法不是“找环即结束”,而是“看资源实例数,逐步化简”。
做题路线
- 先识别边方向:资源到进程是已分配,进程到资源是正在申请。
- 统计每类资源总实例数、已分配数、剩余可用数。
- 找当前申请能被满足的进程,假设其完成并释放资源。
- 每释放一次资源,就重新检查剩余进程是否可化简。
- 多实例图中不要只凭有环判断死锁,必须化简。
例题
单选
资源图中“资源 -> 进程”的边通常表示:
单选
多实例资源图中出现环时,应首先:
单选
资源图化简的基本步骤是:
自查要点
- 申请边和分配边方向分别是什么?
- 为什么多实例资源图有环不一定死锁?
- 化简资源图时每一步释放了什么?