【摘要】分布式系统中的资源并发访问会遇到死锁问题。本文简要介绍了死锁及其解决方法,随后从算法流程,实例分析两个方面详细介绍了死锁检测任务中的扩散计算方法。
死锁检测算法概述
死锁问题
分布式是从物理资源的角度去将不同的机器组成一个整体对外服务,实现分布式架构需要考虑多进程或者是多线程的问题。无论是进程还是线程,在访问共享资源时,都需要采用加锁的方式访问资源,以保证操作过程中数据的安全,而不受到其余操作的干扰。并发执行时,如果遇到两个或多个事务都在等待对方占有的资源,于是彼此之间都不能继续执行而处于永远等待状态,此现象称为死锁。
如下图所示,U进程等待A资源,而A资源被T进程持有;T进程等待B资源,而B资源被U进程持有。两个进程都在等待双方占有的资源,出现永远等待状态,即死锁。

解决方法
死锁预防:通过设置某些限制条件,以破坏产生死锁的四个条件中的一个或者几个,来防止发生死锁。
死锁避免:系统在分配资源时根据资源的使用情况提前作出预测,从而避免死锁的发生。
死锁检测:允许系统在运行的过程中产生死锁,但系统中有相应的管理模块可以及时检测出已经产生的死锁,并且精确地确定与死锁有关的进程和资源,然后放弃某个进程,清除系统中已经产