本文へスキップ

技術士試験(情報工学部門)・情報技術者試験。ファーストマクロ。


Since 2016.4.19

平成20年度 技術士第一次試験問題【専門科目】

W−11

2つの資源A、Bがあり、ともに排他的にアクセスする必要がある。そのため、それぞれの資源に対応した排他ロックa、b を用いるものとする。2つのプロセスX、Yが、それぞれ次の順序で実行している場合、@〜Dの実行順序のうち、デッドロックが起きるものはどれか。なお、選択肢の矢印は、時間的な処理の推移を意味する。

   プロセスX         プロセスY
 ↓X1:ロックaを確保    ↓Y1:ロックbを確保
 ↓X2:ロックbを確保    ↓Y2:ロックaを確保
 ↓X3:資源A、Bにアクセス  ↓Y3:資源 A、Bにアクセス
 ↓X4:ロックbを解放    ↓Y4:ロックaを解放
 ↓X5:ロックaを解放    ↓Y5:ロックbを解放

@ X1→Y1→Y2→X2

A X1→X2→Y1→Y2

B X1→X2→Y1→X3→Y2

C X1→X2→X3→Y1→Y2

D X1→X2→X3→X4→Y1


正解

@


解説

@ 正しい。
X1:Aを確保
Y1:Bを確保
Y2:Aを確保しようとして解除待ち。 
X2:Bを確保しようとして解除待ち。
 ⇒Y2とX2でデッドロックが発生する。

A
X1:Aを確保
X2:Bを確保
Y1:Bを確保しようとして解除待ち
 ⇒Y2はY1が終了するまで実行されない。

B
X1:Aを確保
X2:Bを確保
Y1:Bを確保しようとして解除待ち
X3:資源A、Bにアクセス
 ⇒Y2はY1が終了するまで実行されない。

C
X1:Aを確保
X2:Bを確保
X3:資源A、Bにアクセス
Y1:Bを確保しようとして解除待ち
 ⇒Y2はY1が終了するまで実行されない。

D
X1:Aを確保
X2:Bを確保
X3:資源A、Bにアクセス
X4:資源Bを解放
Y1:Bを確保
 ⇒ここまでスムーズに処理される。

W−10 目次 W−12