分布式死锁检测:AND与OR通信模型算法解析
1. AND通信模型中的死锁检测
在AND通信模型里,死锁检测借助PROBE消息来达成。当观察者 obsi 收到 PROBE(k,seqnb,j,arrived) 消息时,若进程 pi 处于活跃状态,或者在 obsi 发送此探测消息时,存在从 pi 到 pj 的消息正在传输,那么该消息会被丢弃。这一情况可通过谓词 (sendi[j] ≠ arrived) 来捕捉(这里的 arrived 是 obsj 发送消息时的 arrj[i] ,并且假定通道是FIFO的)。
若 pi 处于被动状态,且没有从 pi 到 pj 的消息正在传输, obsi 会先检查自身是否为该探测的发起者(即谓词 k = i )。若为发起者,它会声明 pi 发生了死锁;若 k ≠ i ,也就是探测的发起者不是 obsi ,并且这是 obsk 发起的新探测, obsi 会更新 sni[k] ,然后向每个 pi 正在等待消息的进程
超级会员免费看
订阅专栏 解锁全文
67

被折叠的 条评论
为什么被折叠?



