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

選択肢を押すと答え合わせができます。
正解と解説を見る
【正解】イ
デッドロックとは、複数のプロセスが互いの占有資源の解放を待ち、どのプロセスも先へ進めなくなる状態です。Aの取得順序はX→Y→Zです。CはZ→X→Yなので、AがXを、CがZを占有した後、AがYを取得してZを待ち、CがXを待つと循環待ちになります。DはZ→Y→Xなので、例えばAがXを占有し、DがZとYを占有すると、AはYを待ち、DはXを待つため、やはりデッドロックが起こり得ます。したがって該当するのはCとDです。
アの「B、C、D」は誤りです。BはAと同じX→Y→Zの順で取得するので、先にXを取得できなかった側は、何も占有しないまま待ちます。Xを取得した側は残りの資源を取得して終了できるため、循環待ちは発生しません。
ウの「Cだけ」は誤りです。Cだけでなく、Dとの組合せでもAとDが互いの資源を待つ状態を作れます。
エの「Dだけ」は誤りです。Dだけでなく、Cとの組合せでもAがZを、CがXを待つ循環が生じます。
【ポイント】 デッドロックの判定では、各処理の資源取得順序を矢印で書き、逆順の関係がないかを確認します。 全プロセスが資源を同じ順序で取得する設計にすると、循環待ちを防止できます。
出典:令和6年度 春期 高度情報処理技術者試験・情報処理安全確保支援士試験 午前I 問6
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。
この回の30問を、アプリで通しで解く
- 本番と同じ問題数・制限時間で通し演習(模試モード)
- 間違えた問題は自動で「復習すべき問題」に回る
- 解説で分からない点はAIに質問できる