本文へスキップ

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


Since 2016.4.19

平成29年度 春期 高度情報技術者試験問題と解説

問8

トランザクションAとBが、共通の資源であるテーブル a と b を表に示すように更新するとき、デッドロックとなるのはどの時点か。ここで、表中の@〜Gは処理の実行順序を示す。また、ロックはテーブルの更新直前にテーブル単位で行い、アンロックはトランザクション終了後に行うものとする。

   ┌─────────────┬─────────────┐
   │ トランザクションA   │  トランザクションB  │
   ├─────────────┼─────────────┤
  ││@ トランザクション開始 │             │
  │├─────────────┼─────────────┤
  ││             │A トランザクション開始 │
  │├─────────────┼─────────────┤
  ││B テーブルa更新    │             │
  │├─────────────┼─────────────┤
 時││             │C テーブルb更新    │
 間│├─────────────┼─────────────┤
  ││D テーブルb更新    │             │
  │├─────────────┼─────────────┤
  ││             │E テーブルa更新    │
  │├─────────────┼─────────────┤
  ││F トランザクション終了 │             │
  │├─────────────┼─────────────┤
  ↓│             │G トランザクション終了 │
   └─────────────┴─────────────┘

ア B  イ C  ウ D  エ E


正解


解説

デッドロックは例えば、今、処理Aが資源aを使っていて、次に資源bを使おうとしている一方で、処理Bは資源bを使っていて、次に資源aを使おうとしている時、処理Aも処理Bも互いに相手の資源解除を待ち続けていて、固まってしまったようになる現象のことである。

トランザクションAはBでテーブルaを更新する。
トランザクションBはCでテーブルbを更新する。

次に、トランザクションAはDでテーブルbを更新しようとするが、トランザクションBがテーブルbを更新しているので、テーブルaをロックしたまま待ち状態となる。

その後、トランザクションBがテーブルbを更新終了し、Eでテーブルbを更新しようとするが、トランザクションAがテーブルaをロックしたままなので、テーブルbをロックしたまま待ち状態となる。

この時点で、トランザクションA、Bともに待ち状態となり、デッドロックとなる。

問7 目次 問9