平成26年度 春期 午前Ⅱ 問7
オペレーティングシステム
デッドロックの発生を防ぐ方法
二つのタスクが共用する二つの資源を排他的に使用するとき,デッドロックが発生するおそれがある。このデッドロックの発生を防ぐ方法はどれか。
- ア一方のタスクの優先度を高くする。
- イ資源獲得の順序を両方のタスクで同じにする。
- ウ資源獲得の順序を両方のタスクで逆にする。
- エ両方のタスクの優先度を同じにする。
答えと解説を見る
✓ これが正解イ資源獲得の順序を両方のタスクで同じにする。
解説
両方のタスクで資源を獲得する順序をそろえると、待ちの輪ができません。
デッドロックは、タスク A が資源1を確保したまま資源2を待ち、タスク B が資源2を確保したまま資源1を待つ、というように、互いに相手の持つ資源を待ち続けて動けなくなる状態です。この循環した待ちは、二つのタスクが資源を逆の順序で獲得しようとするときに生じます。両方のタスクで資源を獲得する順序を同じにすれば、先に資源1を確保したほうだけが資源2に進めるので、もう一方は資源1の段階で待つことになり、互いに相手を待つ輪ができません。デッドロックの防止は、待ちの輪を作らないことと押さえると見分けられます。
ほかの選択肢はなぜ違うのか
- ア一方のタスクの優先度を高くする。:一方のタスクの優先度を高くしても、どちらが先に実行されるかが変わるだけです。低い優先度のタスクが資源を一つ確保した後で切り替われば、互いに相手の資源を待つ状態は起こり得るので、デッドロックは防げません。
- ウ資源獲得の順序を両方のタスクで逆にする。:獲得の順序を両方のタスクで逆にするのは、まさにデッドロックが起こる典型的な条件です。片方が資源1から、もう片方が資源2から確保すると、互いに相手の資源を待つ状態に陥ります。
- エ両方のタスクの優先度を同じにする。:両方のタスクの優先度を同じにしても、資源を獲得する順序には何の影響もありません。順序が食い違っていれば、相手の資源を待ち合う状態は同じように起こり得ます。
この問題の用語
- 排他制御同じデータを同時に更新しても、矛盾が起きないようにする仕組みです。先の処理が終わるまで、後の処理を待たせて防ぎます。
出典:平成26年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問7
同じ用語が出る問題
- 令和7年度 秋期 午前Ⅱ 問6:デッドロックに関する問題(排他制御)
- 令和5年度 秋期 午前Ⅱ 問8:スタベーションに関する記述(排他制御)
- 平成31年度 春期 午前Ⅱ 問8:セマフォに関する問題(排他制御)
- 平成31年度 春期 午前Ⅱ 問7:優先度逆転の原因となるもの(排他制御)
- 平成30年度 春期 午前Ⅱ 問10:優先度逆転に関する問題(排他制御)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)