応用情報技術者試験 令和6年度 春期 午前 問17
三つの資源 X ~ Z を占有して処理を行う四つのプロセス A ~ D がある。各プロセスは処理の進行に伴い、表中の数値の順に資源を占有し、実行終了時に三つの資源を一括して解放する。プロセス A と同時にもう一つプロセスを動かした場合に、デッドロックを起こす可能性があるプロセスはどれか。

選択肢を押すと答え合わせができます。
正解と解説を見る
【正解】イ
図表から、資源の占有順序は、AとBがX→Y→Z、CがZ→X→Y、DがZ→Y→Xです。デッドロックは、複数のプロセスが資源を保持したまま、互いに相手の資源の解放を待つ「循環待ち」が生じると発生します。
AとCでは、AがXとYを占有し、CがZを占有した状態を考えます。Aは次のZを待ち、Cは次のXを待つため、互いに先へ進めずデッドロックになります。AとDでは、AがXを占有し、DがZとYを占有すると、AはYを待ち、DはXを待つので、やはりデッドロックになります。したがって、可能性があるのはCとDです。
アは誤りです。Bを含めている点が不適切です。AとBはどちらもX→Y→Zの順なので、一方が最初のXを取得すると、他方はXの取得前に待機します。Xを取得した側はY、Zと処理を進めて全資源を解放でき、循環待ちは生じません。
ウは誤りです。Cだけでなく、Dとの組合せでもXとYを互いに待つ状態が発生します。
エは誤りです。Dだけでなく、Cとの組合せでもXとZを互いに待つ状態が発生します。
【ポイント】 ・デッドロックの判定では、各プロセスの資源取得順序を矢印で表すと分かりやすくなります。 ・同じ順序で資源を取得するプロセス同士では、通常、循環待ちは発生しません。 ・資源を一括解放する条件では、待機中も既に取得した資源を保持し続ける点が重要です。
出典:令和6年度 春期 応用情報技術者試験 午前 問17
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。
この回の80問を、アプリで通しで解く
- 本番と同じ問題数・制限時間で通し演習(模試モード)
- 間違えた問題は自動で「復習すべき問題」に回る
- 解説で分からない点はAIに質問できる