デッドロックの防止
出典: 令和4年度 秋期 応用情報技術者試験 午前 問16 (IPA)
二つのタスクが共用する二つの資源を排他的に使用するとき,デッドロックが発生するおそれがある。このデッドロックの発生を防ぐ方法はどれか。
- ア 一方のタスクの優先度を高くする。
- イ 資源獲得の順序を両方のタスクで同じにする。
- ウ 資源獲得の順序を両方のタスクで逆にする。
- エ 両方のタスクの優先度を同じにする。
正解と解説を見る
正解: イ
- ア: 優先度を変えても、資源を逆の順序で獲得すれば、お互いに相手の資源を待つ状態になりえます。
- イ: 獲得の順序を同じにすれば、互いに相手の資源を待ち合う状態にならないので、正しい答えです。
- ウ: 獲得の順序を逆にすると、まさにデッドロックが起きる条件になります。
- エ: 優先度を同じにしても、獲得の順序が逆ならデッドロックは起こりえます。
ポイント
- デッドロックは、タスク 1 が資源 A → B、タスク 2 が資源 B → A の順に獲得しようとして、互いに相手が持っている資源を待ち続けることで起こります。
- 両方のタスクで 資源を獲得する順序を同じにする (どちらも A → B) と、先に A を取った方が B も取れるので、デッドロックは起きません。