作業系統之死鎖

2021-10-06 20:43:20 字數 1143 閱讀 4502

所謂死鎖,是指多個程序在執行過程中因爭奪資源而造成的一種僵局,當程序處於這種僵持狀態時,若無外力作用,它們都將無法再向前推進。 因此我們舉個例子來描述,如果此時有乙個執行緒a,按照先鎖a再獲得鎖b的的順序獲得鎖,而在此同時又有另外乙個執行緒b,按照先鎖b再鎖a的順序獲得鎖。

a.競爭資源

系統中的資源可以分為兩類:

可剝奪資源,是指某程序在獲得這類資源後,該資源可以再被其他程序或系統剝奪,cpu和主存均屬於可剝奪性資源;

另一類資源是不可剝奪資源,當系統把這類資源分配給某程序後,再不能強行收回,只能在程序用完後自行釋放,如磁帶機、印表機等。

產生死鎖中的競爭資源之一指的是競爭不可剝奪資源(例如:系統中只有一台印表機,可供程序p1使用,假定p1已占用了印表機,若p2繼續要求印表機列印將阻塞)

產生死鎖中的競爭資源另外一種資源指的是競爭臨時資源(臨時資源包括硬體中斷、訊號、訊息、緩衝區內的訊息等),通常訊息通訊順序進行不當,則會產生死鎖

b.程序間推進順序非法

若p1保持了資源r1,p2保持了資源r2,系統處於不安全狀態,因為這兩個程序再向前推進,便可能發生死鎖

例如,當p1執行到p1:request(r2)時,將因r2已被p2占用而阻塞;當p2執行到p2:request(r1)時,也將因r1已被p1占用而阻塞,於是發生程序死鎖

互斥條件:程序要求對所分配的資源進行排它性控制,即在一段時間內某資源僅為一程序所占用。

請求和保持條件:當程序因請求資源而阻塞時,對已獲得的資源保持不放。

不剝奪條件:程序已獲得的資源在未使用完之前,不能剝奪,只能在使用完時由自己釋放。

環路等待條件:在發生死鎖時,必然存在乙個程序–資源的環形鏈。

資源一次性分配:一次性分配所有資源,這樣就不會再有請求了:(破壞請求條件)

只要有乙個資源得不到分配,也不給這個程序分配其他的資源:(破壞請保持條件)

可剝奪資源:即當某程序獲得了部分資源,但得不到其它資源,則釋放已占有的資源(破壞不可剝奪條件)

資源有序分配法:系統給每類資源賦予乙個編號,每乙個程序按編號遞增的順序請求資源,釋放則相反(破壞環路等待條件)

參考死鎖

作業系統之死鎖

一組程序中,每個程序都無限等待被該組程序中另一程序所占有的資源,因而永遠無法得到的資源,這種現象稱為程序死鎖,這一組程序就稱為死鎖程序,如果死鎖發生,會浪費大量系統資源,甚至導致系統崩潰。死鎖產生的必要條件 產生死鎖必須同時滿足以下四個條件,只要其中任一條件不成立,死鎖就不會發生。死鎖預防 防止死鎖...

作業系統之死鎖

通俗的講,死鎖是指多個程序因競爭資源而造成的一種僵局 互相等待 無外力作用,這些程序都將無法向前推進。死鎖產生的原因如下 1.系統資源的競爭 2.程序推進順序非法 死鎖產生的必要條件 產生死鎖必須同時滿足以下四個條件,只要其中乙個條件不成立,死鎖就不會發生 1.互斥條件 程序要求對所分配的資源進行排...

作業系統之死鎖

目錄 1.必要條件 2.處理方法 3.鴕鳥策略 4.死鎖檢測與死鎖恢復 1 每種型別乙個資源的死鎖檢測 2 每種型別多個資源死鎖檢測 3 死鎖恢復 5.死鎖預防 1 破壞互斥條件 2 破壞占有和等待條件 3 破壞不可搶占條件 4 破壞環路等待 6.死鎖避免 1 安全狀態 2 銀行家演算法 主要有以下...