1. 程式人生 > 實用技巧 >作業系統基礎:程序知識筆記(三)

作業系統基礎:程序知識筆記(三)

1、死鎖概念知識

計算機中存在許多互斥資源(印表機)、軟體資源(程序表、臨界區)如果兩個程序同時呼叫印表機,或同時進入臨界區必然會出現問題。

死鎖:指兩個以上的程序互相要求對方已經佔有的資源導致無法繼續進行下去的現象。

2、死鎖案例

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

假設系統中有一臺印表機A、一臺掃描器B,它們被程序P1、P2共享,兩個程序併發執行,按照下面的順序請求和釋放資源

如果按照P1<a>P2<a>P1<b>P2<b>的順序執行,會發生死鎖。首先P1<a>印表機A未被佔用,可以正常執行;P2<a>掃描器沒有被佔用所以可以正常執行。

P1<b>時掃描器被佔用,所以需要等待。P1<b>時印表機被佔用所以也需要等待。這樣導致雙方互相請求對方已經佔用的資源,系統就會發生死鎖。

2.2 同類資源分配不當引起死鎖

如果系統中有m個資源被n個程序共享,當每個程序都需要k個資源,並且m<nk時,即資源數小於程序所要求的的總數時,可能會引起死鎖。

2.3 PV操作使用不當引起死鎖

P2程序從緩衝區取產品前,先執行P(S2),因為S2=-1,故P2等待;P1程序將產品送到緩衝區後。執行P(S1),因為S1=-1,故P1等待。這樣P1、P2都無法繼續執行下午,導致系統死鎖。

3、產生死鎖的原因和條件

原因:競爭資源及程序推進順序非

必要條件:互斥條件、請求保持條件、不可剝奪條件、環路條件。

程序資源有向圖:由方框(資源)、圓圈(請求資源)、有向邊組成。

4、死鎖的處理

鴕鳥策略(不理睬策略)、預防策略、避免策略、檢測與解除死鎖。

4.1 死鎖預防

採用某種策略顯示併發程序對資源的請求,破壞死鎖產生的某個必要條件,是系統在任何時刻都不能滿足死鎖的必要條件。預防死鎖的兩種策略如下:

1、預先靜態分配法

破壞不可剝奪條件、預先分配所需資源,保證不出現資源等待的情況。缺點:會降低資源利用率、併發程度。

2、資源有序分配法

破壞環路條件。把資源分類按順序排列,保證不形成環路。缺點:限制了程序對資源的請求、資源的排序會佔用系統開銷。

4.2 死鎖避免

死鎖預防是設法破壞產生死鎖的必要條件之一,嚴格防止死鎖產生。死鎖避免並不是嚴格地限制死鎖產生的必要條件。最經典的死鎖避免演算法是Dijkstra提出的銀行家演算法。缺點:死鎖演算法會佔用系統的很大開銷。

4.3 死鎖檢測

該方法對資源分配不加限制,即允許死鎖產生,當系統要定時執行死鎖檢測程式,判斷系統是否發生死鎖,如果檢測到則設法解除。

4.4 死鎖解除

1、資源剝奪法:從一些程序那裡強行剝奪足夠數量的資源分配給死鎖程序。

2、撤銷程序法:按照某種策略撤銷死鎖程序,直到解除死鎖。

IT技術分享社群

個人部落格網站:https://programmerblog.xyz

文章推薦程式設計師效率:畫流程圖常用的工具程式設計師效率:整理常用的線上筆記軟體遠端辦公:常用的遠端協助軟體,你都知道嗎?51微控制器程式下載、ISP及串列埠基礎知識硬體:斷路器、接觸器、繼電器基礎知識