AUシステム監査技術者試験 午前Ⅰ

令和4年度秋期 システム監査技術者 午前Ⅰ 問6

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

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

選択肢

  1. ア
    一方のタスクの優先度を高くする。
  2. イ
    資源獲得の順序を両方のタスクで同じにする。
  3. ウ
    資源獲得の順序を両方のタスクで逆にする。
  4. エ
    両方のタスクの優先度を同じにする。
解き方のヒントを見る

デッドロック対策を考える視点

デッドロックを扱うときは、複数の処理が資源を待ち続ける可能性に注目し、発生前に条件をどう整理するか、各記述の前提と結論が対応しているかを読み比べます。

この問題で問われていること

確認の中心を、処理同士の待ち状態が循環する可能性をどのように評価しているかに絞り、個別の方式名や選択肢の表現ではなく、前提と判断基準の対応を確かめます。

視点

資源の獲得と解放を考える際は、処理間の依存関係を整理し、待ちが固定化する条件と、それを避けるための管理上の着眼点を切り分けます。

確認ポイント

  • 処理間の待ち関係を、同じ前提で比較できているか
  • 発生前の予防と、発生後の対応を混同していないか
  • 記述が示す条件と結論の結び付きに飛躍がないか
正解と解説を見る

正解

イ

解説

デッドロックは、タスク同士が資源を保持しながら相手の資源を待つ循環待ちによって発生する。資源を取得する順序を統一すれば、この循環が生じないようにできる。

理由

二つのタスクが異なる順序で資源を要求すると、一方が資源Aを保持して資源Bを待ち、他方が資源Bを保持して資源Aを待つ状態が起こり得る。両方のタスクで資源獲得順序を統一すると、この循環待ちを防止できる。

比較

タスクの優先度を変更したり同じにしたりするだけでは、資源を保持したまま別の資源を待つ関係をなくせない。逆の順序を採用すると、むしろ循環待ちの条件を作る可能性がある。

選択肢ア

これは不正解だよ。一方のタスクの優先度を高くしても、低い側が資源を保持したまま高い側の資源を待つなど、資源待ちの循環を直接なくせない。優先度変更はスケジューリングの扱いを変えるだけで、資源獲得順序の不一致という原因への対策にならない。

選択肢イ(正解)

これは正解だよ。両方のタスクが資源を同じ順序で獲得する規則にすれば、一方が先の資源を保持して後の資源を待つ一方、他方が後の資源を保持して先の資源を待つという循環を防げる。したがって、デッドロックの発生条件を取り除ける。

選択肢ウ

これは不正解だよ。資源獲得の順序を両方のタスクで逆にすると、各タスクが異なる資源を先に取得する関係になりやすい。その結果、一方が資源を保持して相手の資源を待ち、相手も別の資源を待つ循環待ちが発生するおそれがある。

選択肢エ

これは不正解だよ。両方のタスクの優先度を同じにしても、資源を取得する順序や、資源を保持したまま別の資源を待つ関係は変わらない。優先度をそろえるだけでは、タスク間の循環待ちを防ぐ直接的な仕組みにならない。

学習のポイント

デッドロックの四つの発生条件と、資源獲得順序の統一による予防方法を理解する。

出典:独立行政法人 情報処理推進機構(IPA)令和4年度秋期 システム監査技術者試験 午前Ⅰ 問6(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針