论文部分内容阅读
分布式系统在提供强大服务能力的同时也面临着可靠性、安全性和复杂性等挑战。因资源分配与需求产生冲突而产生的死锁,在分布式系统中是一种较常见的软件错误。若不能及时处理系统中出现的死锁,则可能出现用户体验下降、计算结果错误和系统效率下降甚至崩溃等问题。常见死锁处理方式包括:预防、避免和检测解决。相对于死锁预防和死锁避免,死锁检测和解决不仅简单高效而且可行性较高。然而,不同于集中式系统,分布式系统具有无共享内存、无全局时钟以及软硬件失效概率较高等特点。这增加了分布式系统中死锁处理的复杂度。同时,作为运行在系统中的应用进程,用于死锁检测和解决的进程需要在保证死锁检测和解决结果正确性的同时注重效率。通过对现有分布式系统中死锁检测算法的研究和分析发现,现有算法多侧重于研究单个进程发起死锁检测时的算法正确性和效率问题。然而,在真实分布式系统中,死锁涉及到的多个进程可能并行发起死锁检测。当多个进程并行检测系统中同一个死锁时,可能出现诸如死锁重复检测和解决导致的伪死锁、非最优死锁解决方案以及算法效率等问题。同时,现有算法大多未考虑计算节点或进程部分或完全失效时的容错问题。再者,诸如移动无线网络系统、移动代理系统和移动边缘计算系统等具有移动性特点的分布式系统中的死锁检测和解决问题还未被充分研究。本文通过研究和分析现有分布式系统中死锁检测算法存在的不足,针对现有算法在并行死锁检测情况下的正确性、效率、容错能力和扩展性的不足提出了相应优化方法。本文主要研究成果如下:(1)提出了一种基于优先级的分布式并行死锁检测优化算法。在所提出的算法中,高优先级死锁检测进程重用低优先级进程已收集的死锁相关信息,以减少低优先级进程重复转发探针消息。同时,为减少所传输消息中携带的数据总量,所提出的算法在每个发起死锁检测的进程正常终止之前不传输死锁相关信息。最后,通过改进的优先级比较策略,算法可选出唯一的死锁检测进程执行死锁相关信息收集、死锁检测和解决以保证算法正确性。相比已有算法,新算法在保证并行死锁检测结果正确的同时,也提高了算法效率。(2)提出了一种基于领导人选举策略的分布式容错并行死锁检测算法。针对分布式系统中死锁检测时进程间通信失效引起的算法无法正常运行问题,提出了一种能够容忍一定范围内死锁检测进程间通信失效的容错算法。在所提出的算法中,死锁检测进程通过维护进程间失效记录和中央控制进程推荐列表,并根据进程优先级推荐新中央控制进程控。新算法在单进程死锁检测情况下保留了集中式死锁检测算法效率的同时提供了一定的容错能力。同时,该算法在多进程并行死锁检测情况下也具有较高的效率。(3)提出了一种面向移动代理系统中单资源模型的分布式并行死锁检测算法。在所提出的算法中,死锁检测代理采用渐进式收集死锁代理相关信息的方式提升算法效率。通过基于改进的优先级比较策略和延迟回复策略减少死锁检测代理在系统中的移动次数和代理移动时携带的数据总量。同时,新算法通过改进的优先级策略保证并行死锁检测和解决结果的正确性。(4)提出了一种面向移动代理系统中一般化资源模型的分布式并行死锁检测算法。所提出的算法利用权值均分技术、扩散计算技术和改进的延迟回复策略以提升算法效率。同时,为保证死锁检测和解决结果的正确性,新算法也使用了基于优先级的比较策略以避免死锁重复检测和解决。新算法在保证死锁检测和解决结果正确性和效率的基础上扩展了算法的适用范围。本文对所提出算法的正确性(即算法活性和安全性)进行了非形式化证明和基于TLA+(Temporal Logic of Actions)的形式化验证。验证结果表明,本文所提出的各算法均满足活性和安全性要求。同时,通过理论性能分析和仿真实验对部分现有死锁检测算法与所提出的算法进行了性能比较。比较结果显示,本文所提出的算法在整体上具有较高的效率。