この概念が出た関連問題

この試験の対策ガイド

情報処理安全確保支援士試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は イ

解説

デッドロックは「循環待ち」が発生するときに起こります。プロセスAの資源占有順序を確認し、同時実行したときに循環する組み合わせを探します。問題の表(図)からプロセスAの占有順序はX→Y→Zと推定されます。デッドロックの必要条件の一つは「占有と待機」+「循環待ち」です。循環待ちが発生するには、AがXを保持してYを待ち、相手がYを保持してXを待つ(または間接的な循環)状況が必要です。プロセスCとDはAと逆順の資源占有(例:Z→Y→XやY→X→Z等)を持つため循環が生じます。プロセスBはAと同じ順序のため循環が起きません。したがって「C, D」が正解(選択肢b)です。

なぜ他の選択肢は違うのか

選択肢 ア
BはAと同じ占有順序(または循環を生じない順序)を持つため、デッドロックは発生しません。B, C, Dすべてが危険というのは誤りです。
選択肢 ウ
DもAと循環する占有順序を持つためデッドロックの可能性があります。Cだけという判断は不十分です。
選択肢 エ
CもAと循環する占有順序を持ちます。Dだけという判断は不十分です。

解くときのポイント

デッドロックの判定は「循環待ちが発生するか」を確認。同じ順序で資源を要求するプロセス間ではデッドロックは起きない。異なる順序を持つプロセスの組み合わせで循環する場合のみ危険。資源要求順序の矢印を書いて循環を視覚化すると判断しやすい。