三つの資源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とCの場合
①Aが資源Xを占有する。
②Cが資源Zを占有する。
③Aが資源Yを占有する。
④Cが資源Zを占有したまま資源Xの解放待ち。
同時にAが資源X・Yを占有したまま、資源Zの解放待ち。
■プロセスAとDの場合
①Aが資源Xを占有する。
②Dが資源Zを占有する。
③Aが資源Yを占有する。
④Dが資源Zを占有したまま資源Yの解放待ち。
同時にAが資源X・Yを占有したまま資源Zの解放待ち。
なおプロセスAとBは
①Aが資源Xを占有する。
②Bが資源Xの解放待ち。
③Aが資源Yを占有する。
④Aが資源Zを占有する。
⑤Aの実行終了。資源をすべて解放。
⑥Bが資源Xを占有する。
⑦Bが資源Yを占有する。
⑧Bが資源Zを占有する。
⑨Bの実行終了。資源をすべて解放。
となり、デッドロックは発生しない。
問19 | 目次 | 問21 |