日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

死鎖的處理基本策略和常用方法

作者:Beyond_2016 更新時(shí)間: 2021-12-18 編程語言

解決死鎖的基本方法如下:

預(yù)防死鎖、避免死鎖、檢測(cè)死鎖、解除死鎖

解決四多的常用策略如下:

鴕鳥策略、預(yù)防策略、避免策略、檢測(cè)與解除死鎖

?

死鎖:指多個(gè)進(jìn)程因競爭共享資源而造成的一種僵局,若無外力作用,這些進(jìn)程都將永遠(yuǎn)不能再 向前推進(jìn)。

安全狀態(tài)與不安全狀態(tài):安全狀態(tài)指系統(tǒng)能按某種進(jìn)程順序來為每個(gè)進(jìn)程分配其所需資源,直 至最大需求,使每個(gè)進(jìn)程都可順利完成。若系統(tǒng)不存在這樣一個(gè)序列, 則稱系統(tǒng)處于不安全狀態(tài)。

?

產(chǎn)生死鎖的原因:(1)競爭系統(tǒng)資源 (2)進(jìn)程的推進(jìn)順序不當(dāng)

產(chǎn)生死鎖的必要條件

互斥條件:進(jìn)程要求對(duì)所分配的資源進(jìn)行排它性控制,即在一段時(shí)間內(nèi)某資源僅為一進(jìn)程所占用。

請(qǐng)求和保持條件:當(dāng)進(jìn)程因請(qǐng)求資源而阻塞時(shí),對(duì)已獲得的資源保持不放。

不剝奪條件:進(jìn)程已獲得的資源在未使用完之前,不能剝奪,只能在使用完時(shí)由自己釋放。

環(huán)路等待條件:在發(fā)生死鎖時(shí),必然存在一個(gè)進(jìn)程--資源的環(huán)形鏈。

解決死鎖的基本方法:

預(yù)防死鎖:

資源一次性分配:(破壞請(qǐng)求和保持條件)

可剝奪資源:即當(dāng)某進(jìn)程新的資源未滿足時(shí),釋放已占有的資源(破壞不可剝奪條件)

資源有序分配法:系統(tǒng)給每類資源賦予一個(gè)編號(hào),每一個(gè)進(jìn)程按編號(hào)遞增的順序請(qǐng)求資源,釋放則相反(破壞環(huán)路等待條件)

?

避免死鎖:

預(yù)防死鎖的幾種策略,會(huì)嚴(yán)重地?fù)p害系統(tǒng)性能。因此在避免死鎖時(shí),要施加較弱的限制,從而獲得 較滿意的系統(tǒng)性能。由于在避免死鎖的策略中,允許進(jìn)程動(dòng)態(tài)地申請(qǐng)資源。因而,系統(tǒng)在進(jìn)行資源分配之前預(yù)先計(jì)算資源分配的安全性。若此次分配不會(huì)導(dǎo)致系統(tǒng)進(jìn)入不安全狀態(tài),則將資源分配給進(jìn)程;否則,進(jìn)程等待。其中最具有代表性的避免死鎖算法是銀行家算法。

?

檢測(cè)死鎖

首先為每個(gè)進(jìn)程和每個(gè)資源指定一個(gè)唯一的號(hào)碼;

然后建立資源分配表和進(jìn)程等待表,例如:

?

解除死鎖:

當(dāng)發(fā)現(xiàn)有進(jìn)程死鎖后,便應(yīng)立即把它從死鎖狀態(tài)中解脫出來,常采用的方法有:

剝奪資源:從其它進(jìn)程剝奪足夠數(shù)量的資源給死鎖進(jìn)程,以解除死鎖狀態(tài);

撤消進(jìn)程:可以直接撤消死鎖進(jìn)程或撤消代價(jià)最小的進(jìn)程,直至有足夠的資源可用,死鎖狀態(tài).消除為止;所謂代價(jià)是指優(yōu)先級(jí)、運(yùn)行代價(jià)、進(jìn)程的重要性和價(jià)值等。

?

原文鏈接:https://blog.csdn.net/Beyond_2016/article/details/81359021

欄目分類
最近更新