死锁检测
假如我们允许发生死锁并且依赖于死锁检测,那么分布式系统中的主要问题就是如何维护等待图,。处理这个问题的常用技术就是每个站点维护一个局部等待图。。图中的节点描述对应于目前占有或请求该站点上任何局部数据项的所有事务(局部和非局部)。例如下图所示 ,发现T2与T3在两个图都有出现,那么这两个事务在两个站点上都有数据请求。
如果局部等待图存在死锁,那么就已经发生了死锁。另外一个方面,任意的局部等待图都不存在死锁,但是把所有局部锁的图都串联在一起,形成全局等待图。
全局等待图
在集中式死锁检测(centralized deadlock detection)方法中,系统在单个站点中构造和维护一个全局等待图: 该站点是死锁检测的协调器。由于系统中存在通信延迟,我们必须区分两类等待图。
死锁处理
当管理器发生了全局等待图中有环,会选择一个牺牲者去回滚。
网友评论