平成26年度 秋期 午前 問16
ソフトウェア
デッドロックに関する問題
三つの資源 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 だけ
答えと解説を見る
✓ これが正解イC,D
解説
取りに行く順が食い違う相手だけが危ないです。
表に並んだ数値は資源の個数ではなく、占有していく順番を表しています。ですからまず、表を、資源を取る順の並びに書き直します。プロセス A は X、Y、Z の順、プロセス B も X、Y、Z の順、プロセス C は Z、X、Y の順、プロセス D は Z、Y、X の順になります。デッドロックが起きるのは、二者が資源を取りに行く順が食い違い、互いに相手が握っているものを待つ輪ができたときだけです。そこで A と C を突き合わせます。A が X を押さえ、C が Z を押さえた状況を考えると、A は Y を取ったあと Z を要求しますが、それは C が握っています。いっぽう C は次に X を要求しますが、それは A が握っています。互いに待つ形になり、可能性があると分かります。A と D も同じで、A が Z を要求した時点で D がそれを握っており、D は Y を要求して A が握っている、という輪ができます。したがって該当するのは C と D の二つです。排他制御の一般則として、すべてのプロセスが資源を同じ順序で取る決まりにすれば輪は作れない、という形でも同じ結論になります。
ほかの選択肢はなぜ違うのか
- アB,C,D:同じ資源を使う相手はすべて危ないと読んだ形です。占有していく並びが先頭から末尾まで A と一致する相手の場合、先に一つ目を押さえたほうが最後まで進み切れるので、もう一方はただ順番を待つだけになり、輪は生じません。
- ウC だけ:食い違う相手を一つ見つけたところで手を止めた形です。もう一方の相手も最初に押さえるのが Z で、A が最後に必要とするものを真っ先に握るという点はまったく同じですから、こちらも見落とせません。
- エD だけ:こちらも一方だけを挙げた形です。残るもう一方の相手も先頭で Z を押さえ、そのあと A が握っている資源を要求する並びになっているので、同じ理由で候補に入ります。
この問題の用語
- 排他制御同じデータを同時に更新しても、矛盾が起きないようにする仕組みです。先の処理が終わるまで、後の処理を待たせて防ぎます。
出典:平成26年度 秋期 応用情報技術者試験 午前 問16
同じ用語が出る問題
- 令和7年度 秋期 午前 問16:排他制御に関する問題(排他制御)
- 平成30年度 秋期 午前 問30:排他制御に関する問題(排他制御)
- 平成30年度 春期 午前 問18:セマフォを用いる目的(排他制御)
- 平成29年度 春期 午前 問29:デッドロックに関する問題(排他制御)
- 平成25年度 春期 午前 問31:排他制御に関する問題(排他制御)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)