デッドロックの見分け方について

八王子さんさん  
(No.1)
(1)
https://www.sc-siken.com/s/kakomon/26_aki/am2_21.html
(2)
www.ap-siken[.]com/s/kakomon/02_aki/q17.html

(1)の問題が発端です。
概要は理解しており、何となくの消去で正解しましたが、どうデッドロックを起こすのかは説明出来ず解説を読んでもピンときません。
(2)に至っては一切分かりません。

抽象的な質問で申し訳ないのですが、デッドロックを見分ける方法や解き方などがあればご教授いただきたいです。
2024.06.16 08:12
GinSanaさん 
SC ブロンズマイスター
(No.2)
X→Yのとき、トランザクションXはトランザクションYがロックしている資源のアンロックを待っている

と書いてあるので、たとえばイのCはBに向けて矢印が引いてあるので、Bのアンロックを待っている。マラソンで前がつっかえてて足踏みをしているようなもんだと思えばいいです。

そんな調子で見ると、イはABCでアンロック待ちのサイクルになっているので、デッドロックになっている。

応用のやつは、表中の数字の順に資源を占有し、とあるので、
プロセスA、B、C、Dを縦に並べて、
横軸に1、2、3を引いて、1のときに誰が何の資源を掴んだのか?を考えていくとわかるが、基本原理として占有順序が異なるやつは起こる可能性があると覚えとけば、Bは除外されて残りはその可能性があるからCとDだ、と言える。
2024.06.16 11:35
八王子さんさん  
(No.3)
う〜んなるほど……
とりあえずループしているものと、順番がバラバラに資源をロックするトランザクションはデッドロックの可能性があるとだけ覚えればいいですかね……
ありがとうございます。
2024.06.16 20:53
せるろーすさん 
(No.4)
この投稿は投稿者により削除されました。(2024.06.17 21:42)
2024.06.17 21:42
せるろーすさん 
(No.5)
Aさん「Cさんや、ちょっとこのデータ欲しいんやけど。」
Cさん「ちょいまちー、今Bさんの返答待ちでロックされとるんや。ほいでBさん、わしが欲しいって言ったデータいつくれるの?」
Bさん「ちょいまちー、今Aさんの返答待ちでロックされとるんや。ほいでAさん、わしが欲しいって言ったデータいつくれるの?」
Aさん「ちょいまちー、今Cさんの返答待ちでロックされとるんや。ほいでCさん、わしが欲しいって言ったデータいつくれるの?」
Cさん「ちょいまちー、...」

多分こんな感じ
2024.06.17 21:42
橙色文書さん 
(No.6)
「覚える」とアレンジされた問題には対応できません。
もしご存知でなければ、共有ロックと排他ロックを「理解する」べきと思います。
主にDBアクセスで考慮される技術ですが、ファイル操作でも動作を確認できます。
2024.06.18 20:28

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop