分布式死锁检测全解析
1. 死锁的基本概念与模型特征
在分布式系统中,死锁是一个常见且棘手的问题。不同的模型下,死锁的表现和检测方式有所不同。
1.1 AND 模型下的死锁
在 AND 模型里,若进程 p3 被 p1 阻塞,p1 又被 p2 阻塞,p2 再被 p3 阻塞,那么 p3、p1 和 p2 都间接地阻塞了自身。而进程 p4 虽被死锁的 p2 阻塞,但它不依赖自身,所以不算死锁。当考虑 AND 模型的等待图时,死锁的发生以图中出现环为特征。也就是说,对于能即时获取当前等待图的外部观察者而言,检测 AND 模型中的死锁,就是检测图中是否存在环。
1.2 OR 模型下的死锁
在 OR 模型中,进程只要从其依赖集中的某个进程收到消息或获得资源,就会被重新激活。因此,图中存在环并不一定意味着死锁。例如,等待图左边的进程 p1 等待来自 p2 或 p5 的消息,由于 p5 未阻塞,p5 有可能在未来解除 p1 的阻塞。而右边的等待图中,p1、p2、p3 和 p5 都被阻塞,且彼此无法让对方继续执行,这种图结构是一个“结”。在有向图中,“结”是指顶点集 S,满足从 S 中的任何顶点到 S 中的其他顶点都有有向路径,且 S 中的顶点没有指向 S 外顶点的出边。所以,在 OR 模型中,死锁的发生以等待图中出现“结”为特征,外部观察者检测死锁就是检测图中是否有“结”。
2. 死锁检测问题的性质
死锁检测问题由安全性和活性两个性质来定义:
- 安全性 :如果在时间 τ 时,观察者声称存在死锁,那么与之关联的进程在时间 τ 时确实处于死锁状态。这确保了不会出
分布式系统死锁检测技术解析
超级会员免费看
订阅专栏 解锁全文
67

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



