デッドロックの可能性があるプロセス
出典: 令和2年度 10月 応用情報技術者試験 午前 問17 (IPA)
三つの資源 X~Z を占有して処理を行う四つのプロセス A~D がある。各プロセスは処理の進行に伴い,表中の数値の順に資源を占有し,実行終了時に三つの資源を一括して解放する。プロセス A と同時にもう一つプロセスを動かした場合に,デッドロックを起こす可能性があるプロセスはどれか。
各プロセスが資源を占有する順序 (数字の順に占有する)
| プロセス | 資源 X | 資源 Y | 資源 Z |
|---|---|---|---|
| A | 1 | 2 | 3 |
| B | 1 | 2 | 3 |
| C | 2 | 3 | 1 |
| D | 3 | 2 | 1 |
- ア B,C,D
- イ C,D
- ウ C だけ
- エ D だけ
正解と解説を見る
正解: イ
- ア: B は A と同じ順で資源を占有するので、デッドロックは起こりません。
- イ: C も D も A と占有の順番が違い、A と資源を待ち合う可能性があるので正しい答えです。
- ウ: D も A と占有の順番が違い (Z → Y → X)、デッドロックを起こす可能性があります。
- エ: C も A と占有の順番が違い (Z → X → Y)、デッドロックを起こす可能性があります。
ポイント
- デッドロックは、2 つのプロセスが お互いに相手の持つ資源を待ち合う と起こります。資源を占有する 順番が違う と起こる可能性があります。
- A の占有順は X → Y → Z です。
・B: X → Y → Z (A と同じ順) → デッドロックは起こりません。
・C: Z → X → Y。A が X を、C が Z を先に取ると、A は Z を、C は X を待ち合ってデッドロックになり得ます。
・D: Z → Y → X。A が X を、D が Z を先に取ると、同じようにデッドロックになり得ます。