令和6年度 春期 応用情報技術者試験 午前 問17
テクノロジOS・ソフトウェア
この問題は2024(R6)春 応用情報技術者 午前に出題されたものです。出題時点の法令・制度に基づく内容のため、現行の内容と一致しない場合があります。
本ページの問題文・選択肢は、原本の体裁を Web 表示用に正規化しています(改行・記号・数式・図表参照の調整)。設問の趣旨および正解に影響する変更は加えていません。
三つの資源 X〜Z を占有して処理を行う四つのプロセス A〜D がある。各プロセスは処理の進行に伴い,表中の数値の順に資源を占有し,実行終了時に三つの資源を一括して解放する。プロセス A と同時にもう一つプロセスを動かした場合に,デッドロックを起こす可能性があるプロセスはどれか。

図の説明テキスト
| プロセス | 資源X | 資源Y | 資源Z |
|---|---|---|---|
| A | 1 | 2 | 3 |
| B | 1 | 2 | 3 |
| C | 2 | 3 | 1 |
| D | 3 | 2 | 1 |
解答・解説を読む
正解: 選択肢イ
デッドロック発生のメカニズム
デッドロックとは、複数のプロセスが互いに相手の占有している資源の解放を待ち合い、どのプロセスも処理を進められなくなる状態を指します。
デッドロックが発生する典型的な条件は、複数のプロセスが異なる順序で複数の資源を要求する場合です。
例えば、プロセスAが「資源X → 資源Y」の順で確保しようとし、別のプロセスが「資源Y → 資源X」の順で確保しようとした場合を考えます。
- プロセスAが資源Xを確保する。
- 同時に別のプロセスが資源Yを確保する。
- プロセスAは次に資源Yを確保しようとするが、別のプロセスが占有しているため待機する。
- 別のプロセスは次に資源Xを確保しようとするが、プロセスAが占有しているため待機する。
このように「循環待ち」が生じることでデッドロックが発生します。
本問における正解の根拠
プロセスAと同時に動かしてデッドロックを起こす可能性があるプロセスは、資源を確保する順序がプロセスAと異なるプロセスです。
- プロセスAと同じ順序で資源を要求するプロセス(本問のプロセスBなど)の場合、先に最初の資源を確保したプロセスがそのまま処理を進めるため、循環待ちは発生しません。
- 一方、プロセスCやプロセスDのように、資源の要求順序がプロセスAと異なる(要求順序に逆転が生じる)場合、互いに異なる資源を先に確保し合う可能性があるため、デッドロックの危険性が生じます。
したがって、デッドロックを起こす可能性があるプロセスは C, D となります。
各選択肢の解説
- ア (B, C, D)
プロセスBはプロセスAと同じ順序で資源を確保するため、デッドロックは発生しません。したがって誤りです。 - イ (C, D)
正解です。プロセスCおよびDは、プロセスAと資源の要求順序が異なるため、デッドロックが発生する可能性があります。
- ウ (C だけ)
プロセスCだけでなく、プロセスDもプロセスAと要求順序が異なるため、デッドロックの可能性があります。したがって誤りです。 - エ (D だけ)
プロセスDだけでなく、プロセスCもプロセスAと要求順序が異なるため、デッドロックの可能性があります。したがって誤りです。