Efficient distributed deadlock avoidance with liveness guarantees

We present a deadlock avoidance algorithm for distributed systems that guarantees liveness. Deadlock avoidance in distributed systems is a hard problem and general solutions are considered impractical due to the high communication overhead. In previous work, however, we showed that practical solutions exist when all possible sequences of resource requests are known a priori in the form of call graphs; in this case protocols can be constructed that perform safe resource allocation based on local data only, that is, no communication between components is required. While avoiding deadlock, those protocols, however, did not avoid starvation: they guaranteed that some process could always make progress, but did not guarantee that every individual process would always eventually terminate.In this paper we present a resource allocation mechanism that avoids deadlock and guarantees absence of starvation, without undue loss of concurrency. The only assumption we make is that the local scheduler is fair. We prove the correctness of the algorithm and show how it can be implemented efficiently.

[1]  Douglas C. Schmidt Evaluating architectures for multithreaded object request brokers , 1998, CACM.

[2]  Aniruddha S. Gokhale,et al.  Alleviating priority inversion and non-determinism in real-time CORBA ORB core architectures , 1998, Proceedings. Fourth IEEE Real-Time Technology and Applications Symposium (Cat. No.98TB100245).

[3]  César Sánchez,et al.  On efficient distributed deadlock avoidance for real-time and embedded systems , 2006, Proceedings 20th IEEE International Parallel & Distributed Processing Symposium.

[4]  Abraham Silberschatz,et al.  Operating System Concepts , 1983 .

[5]  Edsger W. Dijkstra,et al.  Cooperating sequential processes , 2002 .

[6]  Mukesh Singhal,et al.  Advanced concepts in operating systems : distributed, database, and multiprocessor operating systems , 1993 .

[7]  Rupak Majumdar,et al.  Code aware resource management , 2005, Formal Methods Syst. Des..

[8]  A. Nico Habermann,et al.  Prevention of system deadlocks , 1969, CACM.

[9]  William Stallings,et al.  Operating Systems: Internals and Design Principles , 1991 .

[10]  Andrew D. Birrell,et al.  An Introduction to Programming with Threads , 1996 .

[11]  Guoliang Xing,et al.  Middleware specialization for memory-constrained networked embedded systems , 2004, Proceedings. RTAS 2004. 10th IEEE Real-Time and Embedded Technology and Applications Symposium, 2004..

[12]  Z. Manna,et al.  On Efficient Deadlock Avoidance for Distributive Recursive Processes , 2022 .

[13]  Douglas C. Schmidt,et al.  Evaluating Architectures for Multi-threaded CORBA Object Request Brokers , 1998 .

[14]  Mukesh Singhal,et al.  Advanced Concepts In Operating Systems , 1994 .

[15]  William Stallings Operating systems (3rd ed.): internals and design principles , 1998 .

[16]  James W. Havender Avoiding Deadlock in Multitasking Systems , 1968, IBM Syst. J..

[17]  Clifford Stein,et al.  Introduction to Algorithms, 2nd edition. , 2001 .

[18]  Edsger Wybe Dijkstra,et al.  Cooperating Sequential Processes, Technical Report EWD-123 , 1965 .

[19]  Douglas C. Schmidt,et al.  Pattern-Oriented Software Architecture, Patterns for Concurrent and Networked Objects , 2013 .

[20]  César Sánchez,et al.  Thread Allocation Protocols for Distributed Real-Time and Embedded Systems , 2005, FORTE.