応用情報技術者平成29年春期 午前29
トランザクションAとBが,共通の資源であるテーブルaとbを表に示すように更新するとき,デッドロックとなるのはどの時点か。ここで,表中の①~⑧は処理の実行順序を示す。また,ロックはテーブルの更新直前にテーブル単位で行い,アンロックはトランザクションの終了後に行うものとする。
1、デッドロックは、
共有資源を使用する2つ以上のプロセスが、互いに相手プロセスの必要とする資源を排他的に使用していて、互いのプロセスが相手が使用している資源の解放を待っている状態に陥ってしまうことをいいます。
つまり、互いに相手プロセスの必要とする資源の解放を待っている
※○の待ち状態になっているからとのこと
⑤はテーブルbを更新しようとする時に、①~⑧の処理順ので、既に運命でデッドロックになるが、まだ○になっていないです。
⑥は、本当に、Aがテーブルaを取得して、テーブルbを待ち
Bがテーブルbを取得して、テーブルaを待ち
の○状態があったので、デッドロックになっている状態とは言えます。
ーーーーーーーーーーーーーーーーーーーーー
二つのタスクが共用する二つの資源を排他的に使用するとき,デッドロックが発生するおそれがある。このデッドロックの発生を防ぐ方法はどれか。
「資源獲得の順序を両方のタスクで同じにする。」ですね。