Skip to content
难度基础(★)
建议时长45分钟

2.5 进程资源图

本课核心知识点整理
本课核心知识点手绘流程图(SVG)

本节导学

死锁资源数公式适合同类资源的抽象计算;进程资源图则适合描述一个具体时刻系统中“谁占有资源、谁还在申请资源”。字幕强调,资源图是某个时刻的静态状态图,要先看清节点、边和资源实例数,再判断是否能继续分配、能否化简。

这类题最容易犯的错是看到环就直接判死锁。只有每类资源都是单实例时,有环通常意味着死锁;多实例资源图中,有环不一定死锁,必须通过化简判断。

图中元素的含义

图形元素含义
进程节点表示一个进程,常写作 P1、P2 等
资源节点表示一类资源,节点内小圆点个数表示资源实例总数
进程 -> 资源申请边,表示进程正在申请某资源
资源 -> 进程分配边,表示资源实例已经分配给该进程

一条边通常表示一个资源实例的申请或分配。判断时先统计资源总数,再减去已经分配出去的数量,得到当前可用资源数。

化简法判断死锁

化简法的核心是模拟“如果某个进程的申请能被满足,它就可以运行完成,随后释放自己占有的资源”。步骤如下:

  1. 计算每类资源当前剩余可用数。
  2. 找到申请需求能够被当前可用资源满足的进程。
  3. 假设该进程完成,删除它相关的申请边和分配边。
  4. 把它原来占有的资源释放回可用资源集合。
  5. 重复以上过程,直到所有进程都被化简,或再也找不到可化简进程。

如果所有进程都能化简,说明系统可以找到一条完成序列,无死锁;如果最后剩下一组进程互相等待且无法化简,说明存在死锁风险或已经死锁。

为什么有环不一定死锁

单实例资源图中,环表示每个进程都在等环上另一个进程占有的唯一资源,因此通常可判死锁。多实例资源图中,即使存在等待环,系统可能还有额外实例能满足某个进程;只要某个进程能先完成并释放资源,环就可能被打破。

因此,资源图题的可靠做法不是“找环即结束”,而是“看资源实例数,逐步化简”。

做题路线

  1. 先识别边方向:资源到进程是已分配,进程到资源是正在申请。
  2. 统计每类资源总实例数、已分配数、剩余可用数。
  3. 找当前申请能被满足的进程,假设其完成并释放资源。
  4. 每释放一次资源,就重新检查剩余进程是否可化简。
  5. 多实例图中不要只凭有环判断死锁,必须化简。

例题

单选
资源图中“资源 -> 进程”的边通常表示:
单选
多实例资源图中出现环时,应首先:
单选
资源图化简的基本步骤是:

自查要点

  1. 申请边和分配边方向分别是什么?
  2. 为什么多实例资源图有环不一定死锁?
  3. 化简资源图时每一步释放了什么?