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