併發 死鎖和飢餓

2021-08-14 18:28:52 字數 1258 閱讀 4802

死鎖的原理

當一組程序中的每個程序都在等待某個事件(如等待所請求的資源釋放),而只有在這組程序中的其他被阻塞的程序才可以觸發該事件,這是就稱這組程序發生死鎖。因為沒有事件能夠被觸發,故死鎖是永久性的。

可重用資源

指一次只能供乙個程序安全地使用,並且不會由於使用而耗盡的資源。如處理器、i/o通道、記憶體和外存、裝置以及諸如檔案、資料庫和訊號量之類的資料結構。

可消耗資源

指可以被建立和銷毀的資源。如中斷、訊號、訊息和i/o緩衝區中的訊息。

死鎖的條件

必要條件:

1)互斥:一次只有乙個程序可以使用乙個資源。

2)占有且等待:當乙個程序等待其他程序時,繼續占有已經分配的資源。

3)不可搶占:不能強行搶占程序已占有的資源。

充分條件:

4)迴圈等待。

死鎖預防:

死鎖預防方法分為兩類:一類是防止必要條件中的三個其中乙個發生;第二類是直接防止充分條件中的迴圈等待發生。

互斥:不可能禁止。

占有且等待:要求程序一次性地請求所有需要的資源,並且阻塞這個程序直到所有請求都滿足。

不可搶占:占有某些資源的乙個程序進行進一步資源請求被拒絕時,該程序必須釋放它最初占有的資源或者作業系統搶占另外乙個程序要求它釋放資源。

迴圈等待:通過定義資源型別的線性順序來預防。

死鎖避免:

他允許三個必要條件發生,但通過明智的選擇,確保永遠不會到達死鎖點。

死鎖檢測:

不限制資源訪問或約束程序行為,作業系統周期性地執行乙個演算法檢測迴圈等待。

自旋鎖:

在同一時刻,只有乙個執行緒能夠獲得自旋鎖,其他企圖獲得自旋鎖的任何縣城將一直進行嘗試(即自選),直到獲得了該鎖。自旋鎖適合在獲得鎖所需的等待時間較短時。

併發 死鎖和飢餓

死鎖原理 一組相互競爭系統資源或進行通訊的程序間的 永久 阻塞。當一組程序中的每個程序都在等待某個事件,而只有這組程序中的其他被阻塞程序才可以觸發該事件,這時就稱這組程序發生死鎖。所有死鎖都涉及兩個或多個程序之間對資源需求的衝突。可重用資源是指一次只能供乙個程序安全地使用,並且不會由於使用而耗盡的資...

併發性 互斥和同步 死鎖和飢餓

二 併發的原理 在單處理器多道程式設計系統中,程序被交替執行,表現出一種併發執行的外部特徵。即使不能實現真正的並行處理,並且在程序間來回切換也需要一定的開銷,交替執行在處理效率和程式結構上還是帶來了重要的好處。在多處理器系統中,不僅可以交替執行程序,而且可以重疊執行程序。三 程序的互動 我們可以根據...

程序飢餓和死鎖

飢餓是指系統不能保證某個程序的等待時間上界,從而使該程序長時間等待,當等待時間給程序推進和響應帶來明顯影響時,稱發生了程序飢餓。當飢餓到一定程度的程序所賦予的任務即使完成也不再具有實際意義時稱該程序被餓死。死鎖是指在多道程式系統中,一組程序中的每乙個程序都無限期等待被該組程序中的另乙個程序所占有且永...