情報処理安全確保支援士試験 情報処理安全確保支援士試験 令和4年度秋期 午前Ⅰ6: 二つのタスクが共用する二つの資源を排他的に使用するとき,デッドロックが発生するおそれがある。このデッドロックの発生を防ぐ方法はどれか。

情報処理安全確保支援士試験 令和4年度秋期 午前Ⅰ
Q 66 / 30
二つのタスクが共用する二つの資源を排他的に使用するとき,デッドロックが発生するおそれがある。このデッドロックの発生を防ぐ方法はどれか。

問題本文

二つのタスクが共用する二つの資源を排他的に使用するとき,デッドロックが発生するおそれがある。このデッドロックの発生を防ぐ方法はどれか。

選択肢

  • .一方のタスクの優先度を高くする。
  • .資源獲得の順序を両方のタスクで同じにする。
  • .資源獲得の順序を両方のタスクで逆にする。
  • .両方のタスクの優先度を同じにする。

正解

. 資源獲得の順序を両方のタスクで同じにする。

解説

デッドロックは、複数タスクが複数資源を相互に待ち合い、循環的な待機(環状待ち)が生じて発生する。発生条件の一つである循環待ちを断ち切るには、全タスクが資源を獲得する順序を統一すればよい。同順だと一方が先に両資源を取り、他方は待つだけで循環が生まれない。よってイが正解。実務でも複数ロックを扱う際は獲得順序を全コードで一貫させるのがデッドロック回避の定石。

選択肢ごとの解説

  • .片方の優先度を上げてもスケジュール順が変わるだけで、循環待ちは解消されず防止にならない。
  • .資源獲得順を両タスクで同一にすると循環待ちが生じず、デッドロックを防げるので正しい。
  • .獲得順を逆にすると互いに相手の持つ資源を待つ典型的な環状待ちとなり、むしろ発生を招くため誤り。
  • .優先度を同じにしても獲得順序の問題は残り、循環待ちを断てないため防止にならない。

情報処理安全確保支援士試験 令和4年度秋期 午前Ⅰ過去問一覧へ戻る・問6