応用情報技術者試験 令和6年春 午前問17 解説付き過去問
問題
三つの資源X~Zを占有して処理を行う四つのプロセスA~Dがある。
各プロセスは処理の進行に伴い、表中の数値の順に資源を占有し、実行終了時に三つの資源を一括して解放する。
プロセスAと同時にもう一つプロセスを動かした場合に、デッドロックを起こす可能性があるプロセスはどれか。


正解
解説
デッドロックとは、共有資源を使用する2つ以上のプロセスが、互いに相手のプロセスが必要とする資源を保持したまま、相手が使用している資源の解放を待っている状態である。
デッドロックが発生すると、両方のプロセスが永久的な待ち状態に陥り、処理を続行できなくなる。
デッドロックの発生は、以下の条件をすべて満たした場合に起こる。
デッドロックの発生は、以下の条件をすべて満たした場合に起こる。
- プロセスが少なくとも1つの資源を占有しており、追加の資源を要求している。
- 資源を占有しているプロセスが、その資源を解放せずに別の資源を待ち続けている。
- 複数のプロセスが、互いに相手が保持している資源を必要としており、循環的に待ち状態が発生している。
- プロセスB
プロセスBはプロセスAと同じ順序で資源X → Y → Zを占有する。 この場合、プロセスAが資源を占有している間、プロセスBは資源の解放を待つことになる。 したがって、デッドロックは発生しない。 - プロセスC
プロセスCは、プロセスAとは異なる順序で資源を占有する。 このため、以下の手順でデッドロックが発生する可能性がある。
- プロセスAが資源Xを占有する。
- プロセスCが資源Zを占有する。
- プロセスAが資源Yを占有しようとするが、プロセスCが先に資源Zを占有しているため待機状態になる。
- プロセスCが資源Xを要求するが、プロセスAが既に占有しているため待機状態になる。
- この時点でプロセスAとプロセスCが互いに相手の資源を待ち続けるため、デッドロックが発生する。
- プロセスAが資源Xを占有する。
- プロセスD
プロセスDもプロセスAとは異なる順序で資源を占有するため、デッドロックが発生する可能性がある。 以下の手順でデッドロックが発生する。
- プロセスAが資源Xを占有する。
- プロセスDが資源Zを占有する。
- プロセスAが資源Yを要求するが、プロセスDが先に資源Zを占有しているため待機状態になる。
- プロセスDが資源Yを要求するが、プロセスAが既に占有しているため待機状態になる。
- この時点でプロセスAとプロセスDが互いに相手の資源を待ち続けるため、デッドロックが発生する。
- プロセスAが資源Xを占有する。