デッドロック:資源グラフに輪ができる

プロセスと資源の「要求」「割当」の矢印を引いて、資源割当グラフに閉路(輪)ができた瞬間にデッドロックが発生することを体感します。

OS では複数のプロセス(P1, P2…)が複数の資源(R1, R2…)を奪い合います。
割当辺 R → P:資源 R が今プロセス P に渡っている。要求辺 P → R:プロセス P が資源 R を欲しがって待っている。
この有向グラフ(資源割当グラフ)に閉路ができると、互いに相手の持つ資源を待ち続けて誰も進めなくなる=デッドロックです。
※ 各資源が 1 個ずつ(単一インスタンス)のとき、閉路の存在 = デッドロックが成り立ちます。
3
3
辺の種類を選んでから、ノードを2つクリックすると辺を引きます
クリック待ち:辺の始点となるノードを選んでください。
辺の本数
0
閉路(輪)
なし
状態
安全
凡例
プロセス(円)
資源(四角・中の●は実体)
━▸ 要求辺 P→R(待っている)
━▸ 割当辺 R→P(持っている)
━▸ 閉路に含まれる辺
いまの辺(クリックで削除)
(まだ辺がありません)
資源割当グラフ(ノードをクリックして辺を引く・ドラッグで移動)
単一インスタンスでは 閉路あり ⇔ デッドロック

いま何が起きている?

ここがポイント