複数プロセスの資源占有順序とデッドロック発生条件

正解は イ (C,D)です。 表の数値を資源の 占有する順番 に読み替えます。資源を取る順番が同じプロセス同士では、先に1番目の資源を取った方が最後まで進めるのでデッドロックは起きません。順番が逆になる資源の組があると、互いに相手の資源を待つ循環待ちが起こり得ます。 プロセス 占有する順番 A と比べた順番 デッドロック A X → Y → Z - - B X → Y → Z 同じ 起きない C Z → X → Y X と Z が逆 起こり得る D Z → Y → X X・Y と Z が逆 起こり得る A と C:C が Z を取り、A が X を取る。C は次に X を要求して A を待ち、A は Y の次に Z を要求して C を待つ A と D:D が Z を取り、A が X と Y を取る。D は次に Y を要求して A を待ち、A は Z を要求して D を待つ B は A と同じ順番なので、A が X を取れば B は X の解放を待つだけで、A は最後まで進めます。したがって、デッドロックを起こす可能性があるのは C と D です。

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

プロセス

資源 X の占有順序

資源 Y の占有順序

資源 Z の占有順序

A

1

2

3

B

1

2

3

C

2

3

1

D

3

2

1

出典令和2年度 10月 応用情報技術者試験 午前 問17
ア
B,C,D
イ
C,D
ウ
C だけ
エ
D だけ