応用情報技術者試験ナビ ロゴ 応用情報技術者試験ナビ
本日は試験日

応用情報技術者試験 令和6年春 午前問17 解説付き過去問

問題

三つの資源X~Zを占有して処理を行う四つのプロセスA~Dがある。 各プロセスは処理の進行に伴い、表中の数値の順に資源を占有し、実行終了時に三つの資源を一括して解放する。 プロセスAと同時にもう一つプロセスを動かした場合に、デッドロックを起こす可能性があるプロセスはどれか。

正解

解説

デッドロックとは、共有資源を使用する2つ以上のプロセスが、互いに相手のプロセスが必要とする資源を保持したまま、相手が使用している資源の解放を待っている状態である。 デッドロックが発生すると、両方のプロセスが永久的な待ち状態に陥り、処理を続行できなくなる。

デッドロックの発生は、以下の条件をすべて満たした場合に起こる。
  1. プロセスが少なくとも1つの資源を占有しており、追加の資源を要求している。

  2. 資源を占有しているプロセスが、その資源を解放せずに別の資源を待ち続けている。

  3. 複数のプロセスが、互いに相手が保持している資源を必要としており、循環的に待ち状態が発生している。

本問では、表に示された資源の占有順序を基に、プロセスAと他のプロセスを同時に動作させた際にデッドロックが発生する可能性があるかを検討する。

  • プロセスB
    プロセスBはプロセスAと同じ順序で資源X → Y → Zを占有する。 この場合、プロセスAが資源を占有している間、プロセスBは資源の解放を待つことになる。 したがって、デッドロックは発生しない。

  • プロセスC
    プロセスCは、プロセスAとは異なる順序で資源を占有する。 このため、以下の手順でデッドロックが発生する可能性がある。
    1. プロセスAが資源Xを占有する。

    2. プロセスCが資源Zを占有する。

    3. プロセスAが資源Yを占有しようとするが、プロセスCが先に資源Zを占有しているため待機状態になる。

    4. プロセスCが資源Xを要求するが、プロセスAが既に占有しているため待機状態になる。

    5. この時点でプロセスAとプロセスCが互いに相手の資源を待ち続けるため、デッドロックが発生する。

  • プロセスD
    プロセスDもプロセスAとは異なる順序で資源を占有するため、デッドロックが発生する可能性がある。 以下の手順でデッドロックが発生する。
    1. プロセスAが資源Xを占有する。

    2. プロセスDが資源Zを占有する。

    3. プロセスAが資源Yを要求するが、プロセスDが先に資源Zを占有しているため待機状態になる。

    4. プロセスDが資源Yを要求するが、プロセスAが既に占有しているため待機状態になる。

    5. この時点でプロセスAとプロセスDが互いに相手の資源を待ち続けるため、デッドロックが発生する。

以上の分析から、プロセスAと同時に動作させた場合にデッドロックが発生する可能性があるのは「プロセスCとプロセスD」である。 したがって、正しい答えは「C、D」となる。