令和2年度 10月 午前 問17
ソフトウェア
デッドロックに関する問題
三つの資源 X 〜 Z を占有して処理を行う四つのプロセス A 〜 D がある。各プロセスは処理の進行に伴い,表中の数値の順に資源を占有し,実行終了時に三つの資源を一括して解放する。プロセス A と同時にもう一つプロセスを動かした場合に,デッドロックを起こす可能性があるプロセスはどれか。
〔資源の占有順序〕
- プロセス A : 資源X=1,資源Y=2,資源Z=3
- プロセス B : 資源X=1,資源Y=2,資源Z=3
- プロセス C : 資源X=2,資源Y=3,資源Z=1
- プロセス D : 資源X=3,資源Y=2,資源Z=1
- アB,C,D
- イC,D
- ウC だけ
- エD だけ
答えと解説を見る
✓ これが正解イC,D
解説
資源を取る順序が違うプロセスと組むと発生し得ます。
デッドロックは、複数のプロセスが互いに相手の持っている資源を待ち続けて先に進めなくなる状態です。設問はプロセス A ともう一つを組み合わせたときの発生し得るかを問うており、ですから、A が資源を取る順序と、組む相手の順序が食い違っているかどうかで見分けます。全プロセスが同じ順序で資源を取るなら、先に取り始めた側が全てを取り終えて解放するまで他方は同じ資源で待つだけで、片側が完走するので循環待ちには至りません。しかし取る順序が違うと、A が先に取ったものを相手が欲しがり、相手が先に取ったものを A が欲しがる、という循環が起こり得ます。A は X、Y、Z の順に取り、B は同じ順、C は Z、X、Y の順、D は Z、Y、X の順です。順の違う相手として組みうるのは C と D で、これらは A と組んだときに循環待ちが成立し得ます。
ほかの選択肢はなぜ違うのか
- アB,C,D:組合せに B、C、D が並んでいます。B の資源取得順序は X、Y、Z で A と全く同じで、先に X を取った側が Y、Z の順に取り終えるまで他方が同じ資源で待つだけとなり、循環待ちに至らないので B を含めるのは適切ではありません。
- ウC だけ:組合せが C だけになっています。C は Z、X、Y の順で取り、A の X、Y、Z の順とは食い違うので確かに発生し得ますが、D も Z、Y、X の順で A と食い違い、循環待ちが成立し得るので、D を除いてしまうのは適切ではありません。
- エD だけ:組合せが D だけになっています。D は Z、Y、X の順で取り、A の X、Y、Z の順とは食い違うので確かに発生し得ますが、C も Z、X、Y の順で A と食い違い、循環待ちが成立し得るので、C を除いてしまうのは適切ではありません。
出典:令和2年度 10月 応用情報技術者試験 午前 問17
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)