死鎖(deadlock): 指程序之間無休止地互相等待!
飢餓(starvation):指乙個程序無休止地等待!
多個程序因資源競爭而造成的一種僵局,相互等待,若無外力作用,這些程序都將無法向前推進。
競爭資源
資源型別:
程序間推進順序非法
程序通訊使用的信件是一種臨時性資源,如果對信件的傳送和接收不加限制,可能引起死鎖。
死鎖的程序推進順序:
p1: request(s3); release(s1);……
p2: request(s1); release(s2);……
p3: request(s2); release(s3);……
互斥條件
需要保護,不能破壞
請求和保持條件
指程序已經保持了至少乙個資源,但又提出了新的資源請求;而該資源又被其他程序占有;此時請求程序阻塞,但又對自己已獲得的資源保持不放。
不剝奪條件
指程序已獲得的資源,在未使用完之前,不能被剝奪;只能在使用完時由自己釋放迴圈等待
指在發生死鎖時,必然存在乙個「程序—資源」的環形鏈;
消除產生死鎖的必要條件
破壞請求和保持條件
破壞不剝奪條件
破壞迴圈等待條件
申請編號次序
方法:分配資源時防止進入不安全狀態
方法:
優點:
缺點:不預防死鎖,隨時檢測死鎖
策略:出現死鎖就解除
方法:
作業系統之死鎖
一組程序中,每個程序都無限等待被該組程序中另一程序所占有的資源,因而永遠無法得到的資源,這種現象稱為程序死鎖,這一組程序就稱為死鎖程序,如果死鎖發生,會浪費大量系統資源,甚至導致系統崩潰。死鎖產生的必要條件 產生死鎖必須同時滿足以下四個條件,只要其中任一條件不成立,死鎖就不會發生。死鎖預防 防止死鎖...
作業系統之死鎖
通俗的講,死鎖是指多個程序因競爭資源而造成的一種僵局 互相等待 無外力作用,這些程序都將無法向前推進。死鎖產生的原因如下 1.系統資源的競爭 2.程序推進順序非法 死鎖產生的必要條件 產生死鎖必須同時滿足以下四個條件,只要其中乙個條件不成立,死鎖就不會發生 1.互斥條件 程序要求對所分配的資源進行排...
作業系統之死鎖
目錄 1.必要條件 2.處理方法 3.鴕鳥策略 4.死鎖檢測與死鎖恢復 1 每種型別乙個資源的死鎖檢測 2 每種型別多個資源死鎖檢測 3 死鎖恢復 5.死鎖預防 1 破壞互斥條件 2 破壞占有和等待條件 3 破壞不可搶占條件 4 破壞環路等待 6.死鎖避免 1 安全狀態 2 銀行家演算法 主要有以下...