当且仅当以下所有条件在系统中同时成立时,才会出现资源上的死锁:[4]
Edward G. Coffman, Jr在1971年发表的文章中首次将这四种条件称为Coffman 条件。
目前大多数操作系统都不能预防死锁,[6] 当死锁发生时,不同的操作系统采取不同的应对方法,这些方法没有固定的标准。大多数方法的工作原理是破坏四种Coffman 条件中的任意一种,通常是第四种。[7] 主要方法如下:
在这种方法中,假设死锁永远不会发生。 这也是鸵鸟算法的应用。[7][8] 这种方法最初由MINIX和UNIX使用。[9] 当死锁发生的频率不高且每次丢失的数据影响较小时,使用该方法。
采取死锁检测这一方法时,允许发生死锁。检查系统的状态以检测已发生的死锁,随后解除死锁。采用跟踪资源分配和进程状态的算法,回滚并重新启动一个或多个进程以便解除检测到的死锁。由于操作系统的资源调度程序知道每个进程锁定和/或当前请求的资源,因此很容易检测已经发生的死锁。[8]
检测到死锁后,可采取下列方法之一解除死锁:
通过破坏四种Coffman 条件中的任意一种预防死锁。
当使用分布式事务或并发控制时,分布式系统中可能会发生分布式死锁。通过死锁检测器的局部等待图构造全局等待图,或者通过像边缘跟踪等分布式算法,都可以检测到分布式死锁。
虚拟死锁是由于系统内部延迟而在分布式系统中错误检测到的死锁,但实际上并不存在。例如,如果进程释放了资源R1并申请资源R2,而第一条消息丢失或延迟,那么协调器(死锁检测器)可能错误地结束死锁(在占有资源R1时同时请求资源R2会导致死锁)。
^Coulouris, George (2012). Distributed Systems Concepts and Design. Pearson. p. 716. ISBN 978-0-273-76059-7..
^Padua, David (2011). Encyclopedia of Parallel Computing. Springer. p. 524. ISBN 9780387097657. Retrieved 28 January 2012..
^Schneider, G. Michael (2009). Invitation to Computer Science. Cengage Learning. p. 271. ISBN 978-0324788594. Retrieved 28 January 2012..
^Silberschatz, Abraham (2006). Operating System Principles (7 ed.). Wiley-India. p. 239. ISBN 9788126509621. Retrieved 29 January 2012..
^"ECS 150 Spring 1999: Four Necessary and Sufficient Conditions for Deadlock". nob.cs.ucdavis.edu. Archived from the original on 29 April 2018. Retrieved 29 April 2018..
^Silberschatz, Abraham (2006). Operating System Principles (7 ed.). Wiley-India. p. 237. ISBN 9788126509621. Retrieved 29 January 2012..
^Stuart, Brian L. (2008). Principles of operating systems (1st ed.). Cengage Learning. p. 446. ISBN 9781418837693. Retrieved 28 January 2012..
^Tanenbaum, Andrew S. (1995). Distributed Operating Systems (1st ed.). Pearson Education. p. 117. ISBN 9788177581799. Retrieved 28 January 2012..
^Shibu, K. (2009). Intro To Embedded Systems (1st ed.). Tata McGraw-Hill Education. p. 446. ISBN 9780070145894. Retrieved 28 January 2012..
^Silberschatz, Abraham (2006). Operating System Principles (7 ed.). Wiley-India. p. 244. ISBN 9788126509621. Retrieved 29 January 2012..
^Silberschatz, Abraham (2006). Operating System Principles (7th ed.). Wiley-India. p. 237. ISBN 9788126509621. Retrieved 29 January 2012..
^Anderson, James H.; Yong-jik Kim (2001). "Shared-memory mutual exclusion: Major research trends since 1986". Archived from the original on 25 May 2006..
^Zöbel, Dieter (October 1983). "The Deadlock problem: a classifying bibliography". ACM SIGOPS Operating Systems Review. 17 (4): 6–15. doi:10.1145/850752.850753. ISSN 0163-5980..
暂无