令和6年度 春期 応用情報技術者試験 午前 問17
テクノロジOS・ソフトウェアタスク管理・排他制御
三つの資源 X〜Z を占有して処理を行う四つのプロセス A〜D がある。各プロセスは処理の進行に伴い,表中の数値の順に資源を占有し,実行終了時に三つの資源を一括して解放する。プロセス A と同時にもう一つプロセスを動かした場合に,デッドロックを起こす可能性があるプロセスはどれか。

図の説明テキスト
| プロセス | 資源X | 資源Y | 資源Z |
|---|---|---|---|
| A | 1 | 2 | 3 |
| B | 1 | 2 | 3 |
| C | 2 | 3 | 1 |
| D | 3 | 2 | 1 |
解答・解説
正解: イ. C, D
デッドロック発生のメカニズム
デッドロックとは、複数のプロセスが互いに相手の占有している資源の解放を待ち合い、どのプロセスも処理を進められなくなる状態を指します。
デッドロックが発生する典型的な条件は、複数のプロセスが異なる順序で複数の資源を要求する場合です。
例えば、プロセス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と要求順序が異なるため、デッドロックの可能性があります。したがって誤りです。