作業系統(第四版) 關於死鎖

2022-10-10 12:30:11 字數 1339 閱讀 9872

死鎖:指多個程序在執行過程中,因爭奪資源而造成的一種僵局。當程序處於這種狀態時,若無外力作用,它們都將無法再向前推進

產生死鎖的原因可歸為兩點

1 競爭資源

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

可剝奪和非剝奪性資源

可剝奪性資源:分配給程序後可以被高優先順序的程序剝奪。如cpu和主存。

不可剝奪性資源:分配給程序後只能在程序用完後釋放。如磁帶機、印表機等。

永久性資源和臨時性資源

永久性:印表機。可順序重複使用

臨時性:程序產生被其他程序短暫使用的資源,如資料資源:「生產者/消費者」演算法中的訊號量。。它可能引起死鎖。

2程序間推進順序非法

程序在執行中具有非同步性特徵:多個程序按向前推進的順序有兩種情況:

推進順序合法

推進順序非法

3產生死鎖的必要條件

互斥條件:程序對所分配到的資源進行排他性使用

請求和保持條件:程序已經保持了至少乙個資源,又提出新的資源請求,而新請求資源被其他程序占有只能造成自身程序阻塞,但對自己已獲得的其他資源保持不放,必然影響其他程序。

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

環路等待條件

破壞這四個條件即是處理死鎖的辦法

存在安全序列,即是安全狀態 否則是不安全狀態

4處理死鎖的基本方法

事先預防

預防死鎖

設定限制條件,破壞四個必要條件的乙個或幾個,預防發生死鎖。

較易實現。限制條件的嚴格也會導致系統資源利用率和系統吞吐量降低。

避免死鎖

不須事先限制,破壞四個必要條件,而是在資源的動態分配過程中,用某種方法去防止系統進入不安全狀態,從而避免發生死鎖。

這種事先加以較弱限制的方法,實現上有一定難度,但可獲較高的資源利用率及系統吞吐量,目前在較完善的系統中,常用此方法來避免發生死鎖。

事後預防

檢測死鎖。

允許系統執行過程中發生死鎖,但通過系統檢測機構可及時的檢測出,能精確確定與死鎖有關的程序和資源;然後採取適當的措施,從系統中將已發生的死鎖清除掉。

解除死鎖。

與死鎖檢測配套的一種措施。

常用的實施方法:撤銷或掛起一些程序,以便**一些資源並將他們分配給已阻塞程序,使之轉為就緒以繼續執行。

死鎖的檢測與解除措施,有可能使系統獲得較好的資源利用率和吞吐量(死鎖機率不一定很高),但在實現上難度也最大。

作業系統(第四版湯小丹)學習筆記

說起來大家可能不信,我校是先教作業系統再教數構 組成 網路的 老師講得也很水,摸不著頭腦,反正上課閒著也是閒著,正好又搞到了第三版的電子版,於是就試著在課上整理了這份筆記。這份筆記的作用也只是當知識點記錄型的,不知不覺就記了好幾十頁 重要的配圖基本找齊了,不過可能有清晰度和水印之類的問題 前期因為老...

c primer大綱(第四版)

第1章 快速入門 第一部分 基本語言 第2章 變數和基本型別 第3章 標準庫型別 第4章 陣列和指標 第5章 表示式 第6章 語句 第7章 函式 第8章 標準io庫 第二部分 容器和演算法 第9章 順序容器 第10章 關聯容器 第11章 泛型演算法 第三部分 類和資料抽象 第12章 類 第13章 複...

c prime重學(四)基於第四版

迭代器 1 插入迭代器 這類迭代器與容器繫結在一起,實現在容器中插入元素的功能 2 iostream迭代器 這類迭代器可與輸入或輸出流繫結在一起,用於迭代遍歷所關聯的io流。3 反向迭代器 這類迭代器事項向後遍歷。而不是向前遍歷。所有容器型別都定義了自己的 reverse iterator型別,由r...