平成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ともに待ち状態となり、
デッドロックとなる。


EXCEL VBAのご相談なら ファーストマクロ 



問7 目次 問9
ファーストマクロ TOPページ