本文へスキップ

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


Since 2016.4.19

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

問8

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

   ┌─────────────┬─────────────┐
   │ トランザクションA   │  トランザクションB  │
   ├─────────────┼─────────────┤
  ││① トランザクション開始 │             │
  │├─────────────┼─────────────┤
  ││             │② トランザクション開始 │
  │├─────────────┼─────────────┤
  ││③ テーブルa更新    │             │
  │├─────────────┼─────────────┤
 時││             │④ テーブルb更新    │
 間│├─────────────┼─────────────┤
  ││⑤ テーブルb更新    │             │
  │├─────────────┼─────────────┤
  ││             │⑥ テーブルa更新    │
  │├─────────────┼─────────────┤
  ││⑦ トランザクション終了 │             │
  │├─────────────┼─────────────┤
  ↓│             │⑧ トランザクション終了 │
   └─────────────┴─────────────┘

ア ③  イ ④  ウ ⑤  エ ⑥


正解


解説

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

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

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

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

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

問7 目次 問9