久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 學習資源 > 講師博文 > 死鎖

死鎖 時間:2023-09-11      來源:華清遠見

死鎖的概念

如果一個進程中的每一個進程都在等待僅該組進程中的其他進程才能引發的事件,那么該組進程是死鎖的

死鎖產生的原因

➢ 多個進程之間爭奪不可搶占的資源, 進程推薦順序或請求順序不當, 可能會產生死鎖

➢ 系統資源不足, 多個進程消耗同種資源

解決死鎖的辦法

➢ 死鎖防止

➢ 死鎖避免

➢ 死鎖檢測和恢復

死鎖防止

死鎖有四個必要條件: 互斥條件, 占有且等待條件, 不可搶占條件, 循環等待條件

而防止死鎖就要破壞掉這四個條件中的其中一個, 防止死鎖產生, 但可能會降低程序效率.

1. 破壞“占有且等待”條件

所有的進程在開始運行之前,必須一次性地申請其在整個運行過程中所需要的全部資源。

2. 破壞“不可搶占”條件

 當一個已經持有了一些資源的進程在提出新的資源請求沒有得到滿足時,它必須釋放已經保持的所有資源,待以后需要使用的時候再重新申請。這就意味著進程已占有的資源會被短暫地釋放或者說是被搶占了。

 該種方法實現起來比較復雜,且代價也比較大。釋放已經保持的資源很有可能會導致進程之前的工作實效等,反復的申請和釋放資源會導致進程的執行被無限的推遲,這不僅會延長進程的周轉周期,還會影響系統的吞吐量。

3. 破壞“循環等待”條件

 可以通過定義資源類型的線性順序來預防,可將每個資源編號,當一個進程占有編號為i的資源時,那么它下一次申請資源只能申請編號大于i的資源。

死鎖避免

 采用資源分配算法, 如銀行家算法等, 合理分配資源, 避免死鎖產生, 但算法程序可能會增加系統負載.

可以利用銀行家算法進行優化: 

 1. 可利用資源向量Available:用于表示系統里邊各種資源剩余的數目。由于系統里邊擁有的資源通常都是有很多種(假設有m種),所以,我們用一個有m個元素的數組來表示各種資源。數組元素的初始值為系統里邊所配置的該類全部可用資源的數目,其數值隨著該類資源的分配與回收動態地改變。

 2. 最大需求矩陣Max:用于表示各個進程對各種資源的額最大需求量。進程可能會有很多個(假設為n個),那么,我們就可以用一個nxm的矩陣來表示各個進程多各種資源的最大需求量

 3. 分配矩陣Allocation:顧名思義,就是用于表示已經分配給各個進程的各種資源的數目。也是一個nxm的矩陣。

 4. 需求矩陣Need:用于表示進程仍然需要的資源數目,用一個nxm的矩陣表示。系統可能沒法一下就滿足了某個進程的最大需求(通常進程對資源的最大需求也是只它在整個運行周期中需要的資源數目,并不是每一個時刻都需要這么多),于是,為了進程的執行能夠向前推進,通常,系統會先分配個進程一部分資源保證進程能夠執行起來。那么,進程的最大需求減去已經分配給進程的數目,就得到了進程仍然需要的資源數目了。

 

 銀行家算法通過對進程需求、占有和系統擁有資源的實時統計,確保系統在分配給進程資源不會造成死鎖才會給與分配。

死鎖檢測和恢復

不試圖阻止死鎖的產生, 而是檢測到死鎖產生時, 采取措施進行恢復

 ● 每種資源類中僅有一個資源,則系統發生了死鎖。此時,環路是系統發生死鎖的充分必要條件,環路中的進程就是死鎖進程。

● 每種資源類中有多個資源,則環路的存在只是產生死鎖的必要不充分條件,系統未必會發生死鎖。

 

上一篇:嵌入式Linux和Linux的區別是什么

下一篇:JRE與JDK的區別與聯系

戳我查看嵌入式每月就業風云榜

點我了解華清遠見高校學霸學習秘籍

猜你關心企業是如何評價華清學員的

干貨分享
相關新聞
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2024 北京華清遠見科技發展有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部