作業系統複習(十一) 死鎖相關知識點整理

2021-10-23 17:42:44 字數 2542 閱讀 8568

死鎖是指兩個或兩個以上的程序在執行過程中,由於競爭資源或者由於彼此通訊而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的程序稱為死鎖程序。是作業系統層面的乙個錯誤,是程序死鎖的簡稱。

實際上來說,計算機系統中有很多一次只能由乙個程序使用的資源的情況,例如印表機,同時只能有乙個程序控制它。在多通道程式設計環境中,若干程序往往要共享這類資源,而且乙個程序所需要的資源還很有可能不止乙個。因此,就會出現若干程序競爭有限資源,又推進順序不當,從而構成無限期迴圈等待的局面。我們稱這種狀態為死鎖。簡單一點描述,死鎖是指多個程序迴圈等待它方占有的資源而無限期地僵持下去的局面。很顯然,如果沒有外力的作用,那麼死鎖涉及到的各個程序都將永遠處於封鎖狀態。

系統發生死鎖現象不僅浪費大量的系統資源,甚至導致整個系統崩潰,帶來災難性後果。所以,對於死鎖問題在理論上和技術上都必須予以高度重視。

**死鎖的起因:**通常源於多個程序對資源的爭奪,不僅對不可搶占資源進行資源進行爭奪時會引起死鎖,而且對可消耗資源進行爭奪時,也會引起死鎖。

競爭不可搶占性資源引起死鎖

競爭可消耗資源引起死鎖

程序推進順序不當引起死鎖

死鎖的定義:如果一組程序中的每乙個程序都在等待僅由該組程序中的其他程序才能引發的事件,那麼該組程序是死鎖的。

產生死鎖的四個必要條件:

互斥條件請求保持條件不可搶占條件迴圈等待條件

處理死鎖的方法:預防死鎖;避免死鎖;檢測死鎖;解除死鎖。

預防死鎖的方法是通過破壞產生死鎖的四個必要條件中的乙個或幾個,以避免發生死鎖。由於互斥條件是非共享裝置所必需的,不僅不能改,還應當加以保證,因此預防死鎖主要是破壞死鎖的後三個條件。

1.破壞「請求和保持」條件

此方法下,系統必須保證做到:當乙個程序在請求資源時,它不能持有不可搶占資源。

2.破壞「不可搶占」條件

此方法下規定:當乙個已經保持了某些不可被搶占資源的程序,提出新的資源請求而不能得到滿足時,它必須釋放已經保持的所有資源,待以後需要時重新申請。

3.破壞「迴圈等待」條件

對系統所有資源型別進行線性排序,對定每個程序必須按序號遞增的順序請求資源。

理解了死鎖的原因,尤其是產生死鎖的四個必要條件,就可以最大可能地避免、預防和解除死鎖。只要打破四個必要條件之一就能有效預防死鎖的發生:打破互斥條件:改造獨占性資源為虛擬資源,大部分資源已無法改造。打破不可搶占條件:當一程序占有一獨占性資源後又申請一獨占性資源而無法滿足,則退出原占有的資源。打破占有且申請條件:採用資源預先分配策略,即程序執行前申請全部資源,滿足則執行,不然就等待,這樣就不會占有且申請。打破迴圈等待條件:實現資源有序分配策略,對所有裝置實現分類編號,所有程序只能採用按序號遞增的形式申請資源。

一種較簡單和直觀的事先預防的方法。方法是通過設定某些限制條件,去破壞產生死鎖的四個必要條件中的乙個或者幾個,來預防發生死鎖。預防死鎖是一種較易實現的方法,已被廣泛使用。但是由於所施加的限制條件往往太嚴格,可能會導致系統資源利用率和系統吞吐量降低。

死鎖避免

系統對程序發出的每乙個系統能夠滿足的資源申請進行動態檢查,並根據檢查結果決定是否分配資源;如果分配後系統可能發生死鎖,則不予分配,否則予以分配。這是一種保證系統不進入死鎖狀態的動態策略。

先檢測:這種方法並不須事先採取任何限制性措施,也不必檢查系統是否已經進入不安全區,此方法允許系統在執行過程中發生死鎖。但可通過系統所設定的檢測機構,及時地檢測出死鎖的發生,並精確地確定與死鎖有關的程序和資源。檢測方法包括定時檢測、效率低時檢測、程序等待時檢測等。

然後解除死鎖:採取適當措施,從系統中將已發生的死鎖清除掉。

這是與檢測死鎖相配套的一種措施。當檢測到系統中已發生死鎖時,須將程序從死鎖狀態中解脫出來。常用的實施方法是撤銷或掛起一些程序,以便**一些資源,再將這些資源分配給已處於阻塞狀態的程序,使之轉為就緒狀態,以繼續執行。死鎖的檢測和解除措施,有可能使系統獲得較好的資源利用率和吞吐量,但在實現上難度也最大。

如果我們在死鎖檢查時發現了死鎖情況,那麼就要努力消除死鎖,使系統從死鎖狀態中恢復過來。消除死鎖的幾種方式:

最簡單、最常用的方法就是人工進行系統的重新啟動,不過這種方法代價很大,它意味著在這之前所有的程序已經完成的計算工作都將付之東流,包括參與死鎖的那些程序,以及未參與死鎖的程序;

撤消程序,剝奪資源。終止參與死鎖的程序,收回它們占有的資源,從而解除死鎖。這時又分兩種情況:一次性撤消參與死鎖的全部程序,剝奪全部資源;或者逐步撤消參與死鎖的程序,逐步收回死鎖程序占有的資源。一般來說,選擇逐步撤消的程序時要按照一定的原則進行,目的是撤消那些代價最小的程序,比如按程序的優先順序確定程序的代價;考慮程序執行時的代價和與此程序相關的外部作業的代價等因素;

程序回退策略,即讓參與死鎖的程序回退到沒有發生死鎖前某一點處,並由此點處繼續執行,以求再次執行時不再發生死鎖。雖然這是個較理想的辦法,但是操作起來系統開銷極大,要有堆疊這樣的機構記錄程序的每一步變化,以便今後的回退,有時這是無法做到的。

作業系統(十一) 死鎖的預防

下面我們來介紹,解決死鎖問題的各種方案 首先我們介紹第一種型別,叫做 死鎖預防 我們首先先總體介紹一下 解決死鎖問題的各種方法。不同的設計者 對於死鎖問題的看法是不一樣的 有的設計者很樂觀 有的設計者很悲觀 因此,他用於解決死鎖問題的方法,是不一樣的 我們總體上,有四種方法,來解決死鎖問題 第一種方...

作業系統知識點複習(一)

作業系統是作為計算機硬體和計算機使用者之間的中介的程式。作業系統的目的是為使用者提供方便且有效地執行程式的環境。作業系統是管理計算機硬體的軟體。第一章 導 論 作業系統是管理計算機硬體的程式,它還為應用程式提供基礎,並且充當計算機硬體和計算機使用者的中介。大型機的作業系統設計的最要目的是為了充分優化...

作業系統知識點

tcp的擁塞控制由4個核心演算法組成。https 把資料進行非對稱加密,然後客戶端從第三方伺服器獲取證書 加密後的公鑰 http完整請求 建立tcp連線,傳送http命令請求頭,web伺服器應答,關閉tcp連線 tcp 三次握手 缺陷 洪氾攻擊 解決辦法 四次揮手 長連線 短連線 程序 執行緒 併發...