死鎖的四個產生必要條件

2021-08-01 23:25:32 字數 1387 閱讀 5353

php愛好者

死鎖:死鎖是指兩個或兩個以上的程序進在執行過程中,由於資源競爭或由於相互通訊而造成的一種阻塞式現象,如果沒有外力影響。那麼它們將永遠的持續下去, 此事稱系統產生死鎖現象,這種永遠互相在等待的程序成為死鎖。

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

1、互斥條件:程序對所分配到的資源具有排他性使用,一段時間內某資源只由乙個程序所占有。若此時還有其他請求資源,則請求者只能等待,直到占有資源的程序使用完畢釋放。

2、請求和保持條件:程序已經保持至少乙個資源,但是又提出新的資源請求,而該資源已經被其他程序所占有,此時請求程序阻塞,但又對自己已經獲得的其他資源保持不變。

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

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

死鎖的產生原因:

1、競爭資源引起程序死鎖:當系統中供多個程序共享的資源例印表機、公用佇列等,其數目不足以滿足程序的需要時,會引起諸程序對資源的競爭而產生死鎖。

2、可剝奪與不可剝奪資源

3、競爭不可剝奪資源:當系統所配置的不可剝奪資源,由於數量不能滿足諸程序執行的需要時,會使程序在執行過程中,因爭奪這些資源而陷入僵局。

4、競爭臨時資源:印表機等為可順序重複使用性資源,稱為永久資源。還有一種臨時資源,就是由乙個程序產生,被另外乙個程序使用,短時間內後便沒有用的資源,也稱為消耗性資源。

解決思索問題的演算法:

有序資源分配法

按照某種規則系統中的所有資源統一編號(例如印表機為1,磁帶機為2 、磁碟為3等)申請時必須以上公升的次序。

系統要求申請程序:1、對它所必須使用的而且屬於同一類的所有資源,必須一次申請完;

2、在申請不同類資源時,必須按照各類裝置的編號一次申請。

採用有序資源分配法:r1的編號為1,r2的編號為2;

pa:申請次序應該是:r1,r2

pb:申請次序應該是:r2,r1

銀行家演算法:

避免死鎖演算法最有代表的就是dijkstra.e.w於2023年提出的銀行家演算法,是避免死鎖的一種重要方法,防止死鎖的機構只要確保上述資格條件之一不出現,則系統就不會出現死鎖問題。在作業系統中研究資源分配策略時也有類似的問題,系統中有限的資源要供多個程序使用,必須保證得到的資源的程序能在有限的時間內歸還資源,以供其他程序的使用。如果資源分配不得到就會發生程序迴圈等待資源,則程序都無法繼續執行下去的死鎖現象。

把乙個程序需要和已占有資源的情況記錄在程序控制中,假定程序控制塊pcb其中「狀態」有就緒態、等待態、完成態。當程序處於等待狀態時,表示系統不能完全滿足該程序當時的資源申請。銀行家演算法進行資源分配可以避免死鎖問題。

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

某一種資源一次只允許乙個程序占有,也就是當資源被分配後,其他程序就無法訪問該資源,直到當前占有資源的程序訪問結束。乙個程序因請求某一資源而進入阻塞佇列而等待,沒有釋放本身程序就占有的資源。程序占有資源之後,在對該資源沒有使用完之前,不能強行剝奪。多個程序之間形成一種頭尾相接的迴圈等待資源關係。方法一...

死鎖的四個必要條件

作業系統中有若干程序併發執行,它們不斷申請 使用 釋放系統資源,雖然系統的進 程協調 通訊機構會對它們進行控制,但也可能出現若干程序都相互等待對方釋放資源才能 繼續執行,否則就阻塞的情況。此時,若不借助外界因素,誰也不能釋放資源,誰也不能解 除阻塞狀態。根據這樣的情況,作業系統中的死鎖被定義為系統中...

死鎖的四個必要條件

作業系統中有若干程序併發執行,它們不斷申請 使用 釋放系統資源,雖然系統的進 程協調 通訊機構會對它們進行控制,但也可能出現若干程序都相互等待對方釋放資源才能 繼續執行,否則就阻塞的情況。此時,若不借助外界因素,誰也不能釋放資源,誰也不能解 除阻塞狀態。根據這樣的情況,作業系統中的死鎖被定義為系統中...