三つの資源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だけ |
答え イ
【解説】
デッドロックを防ぐためには、各プロセスが資源を占有する順番を同じにするか、複数の資源を占有する状態を作らないことである。
今回のプロセスの処理では、各プロセスは複数の資源を占有する仕様なので、資源を占有する順番を同じにすれば、デッドロックを防ぐことができる。
プロセスA〜Dの資源の占有順序を見るとプロセスAとプロセスBは資源の占有順序が同じなので、プロセスAとプロセスBでデッドロックは発生しない。
しかし、プロセスAからみて、プロセスCとプロセスDは資源の占有順序が異なるのでデッドロックを起こす可能性がある。(イ)
【キーワード】
・デッドロック