IPA過去問ドリル

令和2年度 10月 応用情報技術者試験 午前 問17

テクノロジ/ソフトウェア

三つの資源 X〜Z を占有して処理を行う四つのプロセス A〜D がある。各プロセスは処理の進行に伴い,表中の数値の順に資源を占有し,実行終了時に三つの資源を一括して解放する。プロセス A と同時にもう一つプロセスを動かした場合に,デッドロックを起こす可能性があるプロセスはどれか。 〔資源の占有順序〕 プロセス A:資源 X=1,資源 Y=2,資源 Z=3 プロセス B:資源 X=1,資源 Y=2,資源 Z=3 プロセス C:資源 X=2,資源 Y=3,資源 Z=1 プロセス D:資源 X=3,資源 Y=2,資源 Z=1 (注:本サイトでは原問題の表を文字表記に変換しています)

出典:令和2年度 10月 応用情報技術者試験 午前 問17

正解:イ

解説

デッドロックは,複数のプロセスが資源を互いに異なる順序で占有し合うことで循環待ちが生じたときに発生します。プロセス A の占有順序は X→Y→Z です。B も X→Y→Z と同じ順序なので循環待ちは起こりません。C は Z→X→Y,D は Z→Y→X で A と順序が食い違うため,A と組み合わせるとデッドロックの可能性があります。

選択肢ごとの解説

  • 誤り。B は A と全く同じ X→Y→Z の順序で資源を占有するため,先に確保した側が処理を終えて解放するまで待つだけで,循環待ちは発生しません。
  • 正しい。C(Z→X→Y)と D(Z→Y→X)は A(X→Y→Z)と占有順序が異なるため,A が X を,相手が Z を確保した状態で互いに待ち合う循環待ちが起こり得ます。
  • 誤り。C だけでなく D も A と占有順序が異なるため,デッドロックの可能性があります。
  • 誤り。D だけでなく C も A と占有順序が異なるため,デッドロックの可能性があります。
応用情報技術者の過去問を演習モードで解く