基本情報技術者試験の過去問と解説
[TOP] [午前分野別] [午後分野別] [キーワード索引] [令和元年秋午前] [令和元年秋午後]

令和元年 秋期 基本情報技術者 午前 問29
問29   デットロックが発生しないデータ処理順序

 2相ロッキングプロトコルに従ってロックを獲得するトランザクション A,B を 図のように同時実行した場合に,デットロックが発生しないデータ処理順序はどれか。 ここで,read と update の位置は,アプリケーションプログラムでの命令発行時点を表す。 また,データ W への read は共有ロックを要求し,データ X,Y,Z への update は 各データへの専有ロックを要求する。

 
  ア    read W    update Y    update X   update Z  
  イ    read W    update Y    update Z   update X  
  ウ    update X   read W     update Y   update Z  
  エ    update Y   update Z    update X   read W   

解答←クリックすると正解が表示されます

解説

 占有ロック(専有ロック)は他からのアクセスを一切認めないロックであり、 共有ロックはデータの参照のみ認めるロックである。 「データ W への read は共有ロックを要求し、データ X,Y,Z への update は 各データへの専有ロックを要求する。」ので、データ X,Y,Z への update 中は他からのアクセスを一切認めない。

 また、問題文で「2相ロッキングプロトコルに従ってロックを獲得する」とあるので、 トランザクションが終了しないとロックの解除は行われない。

 図のように、Aが「X」、「Y」の順に update し、Bが「Y」、「X」のように update すると 両方が「待ち」の状態になり、デッドロックが生じる。

  • )は、Aが「update Y」のとき、Bが「update X」のときに「待ち」になりデッドロックが生じる。
  • )は、Aが「update Y」のとき、Bが「update X」のときに「待ち」になりデッドロックが生じる。
  • )は、Aは「update X」のとき「待ち」になるが、Bが終了するとロックが解除される。
  • )は、Aが「update Y」のとき、Bが「update X」のときに「待ち」になりデッドロックが生じる。


[←前の問題] [次の問題→] [問題一覧表] [分野別] [キーワード索引] [基本情報技術者試験TOP ]