操作系统(三十一)死锁的检测和解除
2.4.4 死鎖的檢測(cè)和解除
目錄
2.4.4 死鎖的檢測(cè)和解除
2.4.4.1 死鎖的檢測(cè)
2.4.4.2 死鎖的解除
2.4.4.1 死鎖的檢測(cè)
??死鎖檢測(cè)算法:用于檢測(cè)系統(tǒng)狀態(tài),以確定系統(tǒng)中是否發(fā)生了死鎖。
? 對(duì)于死鎖檢測(cè)算法有一種專門的數(shù)據(jù)結(jié)構(gòu)稱為資源分配圖:
一般用矩形表示資源結(jié)點(diǎn),矩形中的小圓代表該類資源的數(shù)量。 死鎖檢測(cè)算法: ? (1) 在資源分配圖中,找出一個(gè)既不阻塞又非獨(dú)立的進(jìn)程結(jié)點(diǎn) Pi。在順利的情況下,Pi可獲得所需資源而繼續(xù)運(yùn)行,直至運(yùn)行完畢,再釋放其所占有的全部資源,這相當(dāng)于消去pi所求的請(qǐng)求邊和分配邊,使之成為孤立的結(jié)點(diǎn)。 ? (2) p1釋放資源后,便可使 p2獲得資源而繼續(xù)運(yùn)行,直至 p2完成后又釋放出它所占有的全部資源。 ??(3) 在進(jìn)行一系列的簡(jiǎn)化后,若能消去圖中所有的邊,使所有的進(jìn)程結(jié)點(diǎn)都成為孤立結(jié)點(diǎn),則稱該圖是可完全簡(jiǎn)化的;若不能通過任何過程使該圖完全簡(jiǎn)化,則稱該圖是不可完全簡(jiǎn)化的。 S 為死鎖狀態(tài)的充分條件是:當(dāng)且僅當(dāng) S 狀態(tài)的資源分配圖是不可完全簡(jiǎn)化的。該充分條件被稱為死鎖定理。2.4.4.2 死鎖的解除
? 死鎖解除算法:當(dāng)認(rèn)定系統(tǒng)中已經(jīng)發(fā)生了死鎖,利用該算法可將系統(tǒng)從死鎖狀態(tài)中解脫出來。 ? 死鎖的解除方法:1. 資源剝奪法。掛起(暫時(shí)放到外存上)某些死鎖進(jìn)程,并搶占它的資源,將這些資源分配給其他的死鎖進(jìn)程。但是應(yīng)防止被掛起的進(jìn)程長(zhǎng)時(shí)間得不到資源而饑餓。
2. 撤銷進(jìn)程法(或稱終止進(jìn)程法)。強(qiáng)制撤銷部分、甚至全部死鎖進(jìn)程,并剝奪這些進(jìn)程的資源。這種方式的優(yōu)點(diǎn)是實(shí)現(xiàn)簡(jiǎn)單,但所付出的代價(jià)可能會(huì)很大。因?yàn)橛行┻M(jìn)程可能已經(jīng)運(yùn)行了很長(zhǎng)時(shí)間,已經(jīng)接近結(jié)束了,一旦被終止可謂功虧一簣,以后還得從頭再來。
3. 進(jìn)程回退法。讓一個(gè)或多個(gè)死鎖進(jìn)程回退到足以避免死鎖的地步。這就要求系統(tǒng)要記錄進(jìn)程的歷史信息,設(shè)置還原點(diǎn)。
總結(jié)
以上是生活随笔為你收集整理的操作系统(三十一)死锁的检测和解除的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 6000字说透,如何做好产品「适老化」!
- 下一篇: 操作系统(三十二)内存的基础常识