死鎖產(chǎn)生的四個(gè)必要條件?如何避免和預(yù)防死鎖產(chǎn)生惩妇?

一株汉、什么是死鎖筐乳?

兩個(gè)線程或兩個(gè)以上線程都在等待對方執(zhí)行完畢才能繼續(xù)往下執(zhí)行的時(shí)候就發(fā)生了死鎖。結(jié)果就是這些線程都陷入了無限的等待中乔妈,這就是死鎖哥童。

舉個(gè)例子:如果線程1鎖住了A,然后嘗試對B進(jìn)行加鎖褒翰,同時(shí)線程2已經(jīng)鎖住了B贮懈,接著嘗試對A進(jìn)行加鎖,這時(shí)死鎖就發(fā)生了优训。線程1永遠(yuǎn)得不到B朵你,線程2也永遠(yuǎn)得不到A,并且它們永遠(yuǎn)也不會(huì)知道發(fā)生了這樣的事情揣非。為了得到彼此的對象(A和B)抡医,它們將永遠(yuǎn)阻塞下去。這種情況就是一個(gè)死鎖早敬。

二忌傻、產(chǎn)生死鎖的四個(gè)必要條件

● 互斥條件:指進(jìn)程對所分配到的資源進(jìn)行排它性使用,即在一段時(shí)間內(nèi)某資源只由一個(gè)進(jìn)程占用搞监。如果此時(shí)還有其它進(jìn)程請求資源水孩,則請求者只能等待,直至占有資源的進(jìn)程用畢釋放琐驴。

● 請求與保持條件:進(jìn)程已經(jīng)保持了至少一個(gè)資源俘种,但又提出了新的資源請求,而該資源 已被其他進(jìn)程占有绝淡,此時(shí)請求進(jìn)程被阻塞宙刘,但對自己已獲得的資源保持不放。

● 不可剝奪條件:進(jìn)程所獲得的資源在未使用完畢之前牢酵,不能被其他進(jìn)程強(qiáng)行奪走悬包,即只能 由獲得該資源的進(jìn)程自己來釋放(只能是主動(dòng)釋放)。

● 循環(huán)等待條件:指在發(fā)生死鎖時(shí)馍乙,必然存在一個(gè)進(jìn)程——資源的環(huán)形鏈布近,即進(jìn)程集合{P0,P1潘拨,P2吊输,···,Pn}中的P0正在等待一個(gè)P1占用的資源铁追;P1正在等待P2占用的資源季蚂,……,Pn正在等待已被P0占用的資源。

這四個(gè)條件是死鎖的必要條件扭屁,只要系統(tǒng)發(fā)生死鎖算谈,這些條件必然成立(即必要不充分條件),而只要上述條件之一不滿足料滥,就不會(huì)發(fā)生死鎖然眼。

三、死鎖產(chǎn)生的原因:

1.系統(tǒng)資源的競爭

當(dāng)系統(tǒng)中供多個(gè)進(jìn)程共享的資源如打印機(jī)葵腹、公用隊(duì)列的等高每,其數(shù)目不足以滿足諸進(jìn)程的需要時(shí),會(huì)引起諸進(jìn)程對資源的競爭而產(chǎn)生死鎖践宴。

2.進(jìn)程運(yùn)行推進(jìn)順序不當(dāng)引起死鎖

● 進(jìn)程推進(jìn)順序合法   當(dāng)進(jìn)程P1和P2并發(fā)執(zhí)行時(shí)鲸匿,如果按照下述順序推進(jìn):P1:Request(R1);

P1:Request(R2)阻肩; P1: Relese(R1)带欢;P1: Relese(R2); P2:Request(R2)烤惊;

P2:Request(R1)乔煞; P2: Relese(R2);P2:

Relese(R1)柒室;這兩個(gè)進(jìn)程便可順利完成渡贾,這種不會(huì)引起進(jìn)程死鎖的推進(jìn)順序是合法的。

● 進(jìn)程推進(jìn)順序非法

  若P1保持了資源R1,P2保持了資源R2伦泥,系統(tǒng)處于不安全狀態(tài)剥啤,因?yàn)檫@兩個(gè)進(jìn)程再向前推進(jìn)锦溪,便可能發(fā)生死鎖不脯。例如,當(dāng)P1運(yùn)行到P1:Request(R2)時(shí)刻诊,將因R2已被P2占用而阻塞防楷;當(dāng)P2運(yùn)行到P2:Request(R1)時(shí),也將因R1已被P1占用而阻塞则涯,于是發(fā)生進(jìn)程死鎖复局。

四、如何避免和預(yù)防死鎖產(chǎn)生

死鎖避免的基本思想:系統(tǒng)對進(jìn)程發(fā)出每一個(gè)系統(tǒng)能夠滿足的資源申請進(jìn)行動(dòng)態(tài)檢查粟判,并根據(jù)檢查結(jié)果決定是否分配資源亿昏,如果分配后系統(tǒng)可能發(fā)生死鎖,則不予分配,否則予以分配档礁。這是一種保證系統(tǒng)不進(jìn)入死鎖狀態(tài)的動(dòng)態(tài)策略角钩。

理解了死鎖的原因,尤其是產(chǎn)生死鎖的四個(gè)必要條件,就可以最大可能地避免递礼、預(yù)防和解除死鎖惨险。只要打破四個(gè)必要條件之一就能有效預(yù)防死鎖的發(fā)生:

● 打破互斥條件:改造獨(dú)占性資源為虛擬資源,大部分資源已無法改造脊髓。

● 打破不可搶占條件:當(dāng)一進(jìn)程占有一獨(dú)占性資源后又申請一獨(dú)占性資源而無法滿足辫愉,則退出原占有的資源。

● 打破占有且申請條件:采用資源預(yù)先分配策略将硝,即進(jìn)程運(yùn)行前申請全部資源恭朗,滿足則運(yùn)行,不然就等待依疼,這樣就不會(huì)占有且申請冀墨。

● 打破循環(huán)等待條件:實(shí)現(xiàn)資源有序分配策略,對所有設(shè)備實(shí)現(xiàn)分類編號涛贯,所有進(jìn)程只能采用按序號遞增的形式申請資源诽嘉。


五、死鎖避免和死鎖預(yù)防的區(qū)別:

死鎖預(yù)防是設(shè)法至少破壞產(chǎn)生死鎖的四個(gè)必要條件之一弟翘,嚴(yán)格的防止死鎖的出現(xiàn)虫腋;而死鎖避免則不那么嚴(yán)格的限制產(chǎn)生死鎖的必要條件的存在,因?yàn)榧词顾梨i的必要條件存在稀余,也不一定發(fā)生死鎖悦冀。死鎖避免是在系統(tǒng)運(yùn)行過程中注意避免死鎖的最終發(fā)生。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末睛琳,一起剝皮案震驚了整個(gè)濱河市盒蟆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌师骗,老刑警劉巖历等,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異辟癌,居然都是意外死亡寒屯,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進(jìn)店門黍少,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寡夹,“玉大人,你說我怎么就攤上這事厂置∑刑停” “怎么了?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵昵济,是天一觀的道長智绸。 經(jīng)常有香客問我或颊,道長,這世上最難降的妖魔是什么传于? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任囱挑,我火速辦了婚禮,結(jié)果婚禮上沼溜,老公的妹妹穿的比我還像新娘平挑。我一直安慰自己,他們只是感情好系草,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布通熄。 她就那樣靜靜地躺著,像睡著了一般找都。 火紅的嫁衣襯著肌膚如雪唇辨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天能耻,我揣著相機(jī)與錄音赏枚,去河邊找鬼。 笑死晓猛,一個(gè)胖子當(dāng)著我的面吹牛饿幅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播戒职,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼栗恩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了洪燥?” 一聲冷哼從身側(cè)響起磕秤,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎捧韵,沒想到半個(gè)月后市咆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纫版,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年床绪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片其弊。...
    茶點(diǎn)故事閱讀 40,872評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖膀斋,靈堂內(nèi)的尸體忽然破棺而出梭伐,到底是詐尸還是另有隱情,我是刑警寧澤仰担,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布糊识,位于F島的核電站绩社,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏赂苗。R本人自食惡果不足惜愉耙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拌滋。 院中可真熱鬧朴沿,春花似錦、人聲如沸败砂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽昌犹。三九已至坚芜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間斜姥,已是汗流浹背鸿竖。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留铸敏,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓搞坝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親桩撮。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評論 2 361

推薦閱讀更多精彩內(nèi)容