平成23年特別午後問3 設問④について
初学者さん
(No.1)
https://www.fe-siken.com/kakomon/23_toku/pm03.html
トランザクションT11がデッドロックにならないのはなぜでしょうか?
T11とT10は同時に青の絵の具に対して占有ロックをかけようとするので、この二つもお互いに待ち状態になると思ったんですが、どこが間違っていますか?
そもそもデッドロックに関する認識がまちがっていますかね?
どなたかご回答宜しくお願い致します。
トランザクションT11がデッドロックにならないのはなぜでしょうか?
T11とT10は同時に青の絵の具に対して占有ロックをかけようとするので、この二つもお互いに待ち状態になると思ったんですが、どこが間違っていますか?
そもそもデッドロックに関する認識がまちがっていますかね?
どなたかご回答宜しくお願い致します。
2022.10.23 11:56
大谷さん
(No.2)
>T11とT10は同時に青の絵の具に対して占有ロックをかけようとするので、この二つもお互いに待ち状態になると思ったんですが、どこが間違っていますか?
「一方はロックを取得でき、もう一方は待ちになる」と考えることができれば、この問題は解消されるないのではないでしょうか?また、「同じであったとしても、何かしらのアルゴリズムによって順序を決め、一方は占有ロックを取得できる。」と考えてはいかがでしょうか?
https://www.fe-siken.com/kakomon/23_toku/pm03.html
2022.10.23 12:42
jjon-comさん
★FE ゴールドマイスター
(No.3)
> T11とT10は同時に青の絵の具に対して占有ロックをかけようとする
まったく同時にロックがかかることはありません。非常に微細でもそこには時間差があり、一瞬でも早かった方が占有ロックをかけて資源を確保し、遅かった方は資源の解放待ち(ロック解除待ち)になります。
> デッドロックに関する認識がまちがっていますかね?
はい、間違っています。リンク先の解説文を引用します。(a)(b)の文字はこちらで補足しました。
> デッドロックとは、共有資源を使用する2つ以上のプロセスが、
> (a) 互いに相手プロセスが必要とする資源を排他的に使用していて、
> (b) 互いのプロセスが相手が使用している資源の解放を待っている状態
具体例で示すなら次のとおり。
(a) トランザクションT1が資源Aを占有ロックしており、かつ、
トランザクションT2が資源Bを占有ロックしている状態で、
(b) トランザクションT1が資源Bを占有ロックしようとし、かつ、
トランザクションT2が資源Aを占有ロックしようとしたとき
このとき、両者はデッドロックの状態になります。
この説明からイメージできると思うのですが、
(a)の状態になるには、T1とT2の実行開始時刻に差があってもかまいませんし、資源Aと資源Bのロック開始時刻に差があってもかまいません。
その後、(b)の状態になるためにも、資源Bおよび資源Aへのロック実行(結果としてロックはできず資源の解放待ちになる)の時刻にも差があってかまいません。
2022.10.23 13:34
広告
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
広告