PMプロジェクトマネージャ試験 午前Ⅰ

平成31年度春期 プロジェクトマネージャ 午前Ⅰ 問6

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

問題

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

選択肢

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

待機関係を整理するための視点

複数の処理が資源を利用する場面では、処理の要求・保持・解放の関係を時間の流れに沿って整理し、相互の待ちが連鎖する可能性に注目して考えます。表面的な用語だけで判断せず、関係を図や表に置き換えて確認しましょう。

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

確認する観点は、資源の獲得と解放の順序が複数の処理の間でどのように関係しているかです。各処理の状態を時系列で並べ、待ちのつながりを丁寧に追ってください。

視点

資源競合を考えるときは、誰が何を必要とし、どの時点で手放すのかを整理します。個々の処理だけでなく、全体の依存関係を捉えることが大切です。

確認ポイント

  • 各処理が必要とする資源と、その利用順序を整理する
  • 資源を保持している状態と、待機している状態を区別する
  • 複数の処理を並べたときの依存関係を時系列で確認する
正解と解説を見る

正解

イ

解説

デッドロックは、二つのタスクがそれぞれ一つの資源を保持し、相手が保持する資源を待つことで発生する。両タスクが資源を同じ順序で獲得する規則にすれば、循環待ちを防止できる。

理由

二つの資源を常に同じ順序で獲得するようにすると、あるタスクが後順位の資源を待つ間に、別のタスクが先順位の資源を保持して待つという循環を作れない。したがって、資源獲得の順序を両方のタスクで同じにする方法が有効です。

比較

タスクの優先度を変更しても、資源を保持したまま別の資源を待つ関係そのものは解消されない。逆順で獲得すると循環待ちを形成しやすく、優先度を同じにするだけでもデッドロック防止にはならない。

選択肢ア

これは不正解だよ。一方のタスクの優先度を高くしても、低い優先度のタスクが資源を保持している場合、高い優先度のタスクがその資源を待つ状況は残る。優先度の変更だけでは、二つの資源を巡る待ち関係の循環を防止できない。

選択肢イ(正解)

これは正解だよ。両方のタスクが資源を同じ順序で獲得すれば、各タスクが異なる資源を先に保持して相手の資源を待つ循環待ちを防げる。デッドロックの発生条件の一つである循環待ちを取り除く方法である。

選択肢ウ

これは不正解だよ。二つのタスクが資源を逆の順序で獲得すると、一方が第1の資源を保持して第2の資源を待ち、他方が第2の資源を保持して第1の資源を待つ状態になりやすい。この関係は循環待ちを生じさせる。

選択肢エ

これは不正解だよ。両方のタスクの優先度を同じにしても、資源を保持したまま相手の資源を待つ状態は変わらない。優先度が同じであることは、資源要求の順序や待ち関係を制御する条件ではないため、防止策にならない。

学習のポイント

デッドロックの四つの発生条件のうち、循環待ちを防ぐ資源獲得順序に注目する。

出典:独立行政法人 情報処理推進機構(IPA)平成31年度春期 プロジェクトマネージャ試験 午前Ⅰ 問6(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

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