メインコンテンツへ
ソフトウェアコンピュータシステム

資源割当グラフによるデッドロック検出に関して、次の状況を考える。プロセスP1はR1を保持しR2を要求、プロセスP2はR2を保持しR3を要求、プロセスP3はR3を保持しR1を要求している。この状況の判定として正しいものはどれか。

ア.デッドロックは発生していない。P1がR2を取得すれば解決できる
イ.デッドロックが発生している。P1→R2→P2→R3→P3→R1→P1 の循環待ちが存在する正解
ウ.デッドロックではなくライブロックが発生している
エ.プロセスが3つあるためデッドロックは起きない

解説

デッドロックは「全員が席を立たないまま隣の人のコップを待ち続けるディナーパーティー」。資源割当グラフで循環(サイクル)を見つければデッドロック確定!

なぜ イ が正解か

資源割当グラフを描くと: P1→R2(要求)、R1→P1(保持)、P2→R3(要求)、R2→P2(保持)、P3→R1(要求)、R3→P3(保持)。グラフ上のパスを追うと: P1はR1を持ちR2を待つ→R2はP2が持つ→P2はR3を待つ→R3はP3が持つ→P3はR1を待つ→R1はP1が持つ→P1に戻る。完全な循環が形成されており、デッドロック確定。

なぜ ア は間違いか

P1がR2を取得するにはP2がR2を解放する必要があるが、P2はR3を待っており解放できない。解決方法が実現不可能なためデッドロック。

なぜ ウ は間違いか

ライブロックはプロセスが動き続けているが進展しない状態。この例では全プロセスがブロック(動いていない)されているのでデッドロック。

なぜ エ は間違いか

プロセス数はデッドロック発生の制限要因ではない。2プロセスでも発生するし、3プロセス以上でも発生する。

出典: AI生成問題(学習用)