(1) 因爲系統資源不足。
(2) 進程運行推進的順序不合適。
(2)請求與保持條件:一個進程因請求資源而阻塞時,對已獲得的資源保持不放。
(3)不可剝奪條件:進程已獲得的資源,在末使用完之前,不能強行剝奪。
(4)循環等待條件:若干進程之間形成一種頭尾相接的循環等待資源關係。
避免死鎖:
死鎖的預防是通過破壞產生條件來阻止死鎖的產生,但這種方法破壞了系統的並行性和併發性。
死鎖產生的前三個條件是死鎖產生的必要條件,也就是說要產生死鎖必須具備的條件,而不是存在這3個條件就一定產生死鎖,那麼只要在邏輯上回避了第四個條件就可以避免死鎖。
避免死鎖採用的是允許前三個條件存在,但通過合理的資源分配算法來確保永遠不會形成環形等待的封閉進程鏈,從而避免死鎖。該方法支持多個進程的並行執行,爲了避免死鎖,系統動態的確定是否分配一個資源給請求的進程。
預防死鎖:具體的做法是破壞產生死鎖的四個必要條件之一。