複数プロセスの資源占有とデッドロック検出

デッドロック(Deadlock)は,複数のプロセスが互いに相手の占有している資源を待ち合ってしまい,処理が進まなくなる状態です。 複数のプロセスが「同一の順序」で資源を要求・占有していく場合は,資源の循環待ちが発生しないためデッドロックは生じません。逆に,「異なる順序」で資源を要求し合う場合には,一方が資源を獲得した状態でもう一方の資源を要求し合うことでデッドロックが発生する可能性があります。 各プロセスの資源占有順序を確認します。 プロセス A:$X \to Y \to Z$ プロセス B:$X \to Y \to Z$(A と全く同じ順序なので,デッドロックは絶対に発生しません) プロセス C:$Z \to X \to Y$(A は X を確保して Z を待ち,C は Z を確保して X を待つことでデッドロックが発生します) プロセス D:$Z \to Y \to X$(A は X を確保して Z を待ち,D は Z を確保して X を待つことでデッドロックが発生します) したがって,プロセス A と同時に動かしたときにデッドロックを起こす可能性があるのは C と D であり,正解はイとなります。 各選択肢の解説は以下のとおりです。 プロセス B はプロセス A と同一の順序($X \to Y \to Z$)で資源を占有するため,デッドロックを起こすことはありません。 プロセス C だけでなく,プロセス D も A と逆順の依存関係を持つためデッドロックを起こします。 プロセス D だけでなく,プロセス C も A との間でデッドロックを起こします。

三つの資源 X〜Z を占有して処理を行う四つのプロセス A〜D がある。各プロセスは処理の進行に伴い,表中の数値の順に資源を占有し,実行終了時に三つの資源を一括して解放する。プロセス A と同時にもう一つプロセスを動かした場合に,デッドロックを起こす可能性があるプロセスはどれか。

プロセス

資源の占有順序

資源 X

資源 Y

資源 Z

A

1

2

3

B

1

2

3

C

2

3

1

D

3

2

1

出典令和6年度 春期 高度情報処理技術者試験 午前Ⅰ
ア
B,C,D
イ
C,D
ウ
C だけ
エ
D だけ