2017年09月29日

平成29年度春期 応用情報技術者試験問題 問29

問29
トランザクション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のご相談なら ファーストマクロ 



posted by ファーストマクロ at 21:34| Comment(0) | H29春応用情報技術者
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。