Distributed Deadlock Detection for Communicating Processes.
Abstract:
In a distributed system where processes communicate directly, deadlock among a set P of processes occurs when all processes in P are idle waiting for messages from other processes in P in order to start execution, but there are no messages in transit between them. For a process which suspects that it may be deadlocked to determine whether it is indeed deadlocked, it is necessary for it to query other processes. Chandy, Misra, and Haas have proposed a distributed deadlock detection algorithm which uses fixed-length queries and replies. According to this algorithm, a process which suspects it may be deadlocked initiates a query computation by querying each process from which it is waiting to receive a message. If the initiator receives one reply for each query sent out, then the initiator is deadlocked. Otherwise, if the initiator has not received all replies within a timeout period T, it assumes that it is not deadlocked. We present five algorithms which use variable-length queries and replies to detect deadlock. Instead of using timeout to indicate an absence of deadlock, these algorithms use explicit messages called informs to convey the absence of deadlock to the query computation initiator. One algorithm detects a deadlock if it exists when the query computation is initiated. the other algorithms will detect deadlock as deadlock conditions develop. Proofs of correctness are provided, along with a simulation study which compares the performance of the new algorithms with that of the algorithms with that of the algorithm by Chandy, Misra, and Haas. Author