死鎖的原因,條件和解決辦法

死鎖概念和產(chǎn)生原因
死鎖是指多個進(jìn)程循環(huán)等待彼此占有的資源而無限期的僵持等待下去的局面辫秧。原因是:

系統(tǒng)提供的資源太少了束倍,遠(yuǎn)不能滿足并發(fā)進(jìn)程對資源的需求
進(jìn)程推進(jìn)順序不合適,互相占有彼此需要的資源盟戏,同時請求對方占有的資源绪妹,往往是程序設(shè)計(jì)不合理
死鎖產(chǎn)生的必要條件
需要同時具有以下四個條件:

互斥條件:即某個資源在一段時間內(nèi)只能由一個進(jìn)程占有,不能同時被兩個或兩個以上的進(jìn)程占有
不可搶占條件:進(jìn)程所獲得的資源在未使用完畢之前柿究,資源申請者不能強(qiáng)行的從資源占有者手中奪取資源邮旷,而只能由該資源的占有者進(jìn)程自行釋放
占有且等待條件:進(jìn)程至少已經(jīng)占有了一個資源,但又申請了一個新的被其他進(jìn)程所占有的資源蝇摸,此時處于等待狀態(tài)
循環(huán)等待條件:若干個進(jìn)程形成環(huán)形鏈婶肩,每個都占用對方申請的下一個資源
死鎖的處理策略
為使系統(tǒng)不發(fā)生死鎖,必須設(shè)法破壞產(chǎn)生死鎖的四個必要條件之一貌夕,或者允許死鎖產(chǎn)生律歼,但當(dāng)死鎖發(fā)生時能檢測出思索,并有能力實(shí)現(xiàn)恢復(fù)啡专。
一般有死鎖的預(yù)防险毁、死鎖避免、死鎖的檢測與恢復(fù)三種方法们童。
(1) 死鎖預(yù)防:破壞導(dǎo)致死鎖必要條件中的任意一個就可以預(yù)防死鎖畔况。例如,要求用戶申請資源時一次性申請所需要的全部資源慧库,這就破壞了保持和等待條件跷跪;將資源分層,得到上一層資源后齐板,才能夠申請下一層資源吵瞻,它破壞了環(huán)路等待條件。預(yù)防通常會降低系統(tǒng)的效率覆积。

(2) 死鎖避免:避免是指進(jìn)程在每次申請資源時判斷這些操作是否安全听皿,例如,使用銀行家算法宽档。死鎖避免算法的執(zhí)行會增加系統(tǒng)的開銷。

(3) 死鎖檢測:死鎖預(yù)防和避免都是事前措施庵朝,而死鎖的檢測則是判斷系統(tǒng)是否處于死鎖狀態(tài)吗冤,如果是又厉,則執(zhí)行死鎖解除策略。

(4) 死鎖解除:這是與死鎖檢測結(jié)合使用的椎瘟,它使用的方式就是剝奪覆致。即將某進(jìn)程所擁有的資源強(qiáng)行收回,分配給其他的進(jìn)程肺蔚。

死鎖預(yù)防:
打破互斥條件:允許進(jìn)程同時訪問資源(有些資源就是不可以同時訪問的煌妈,無實(shí)用價值)
打破不可搶占條件:比如給進(jìn)程設(shè)置優(yōu)先級,高優(yōu)先級的可以搶占資源(實(shí)現(xiàn)困難宣羊,降低系統(tǒng)性能)
打破占有且等待條件:實(shí)行資源預(yù)分配策略璧诵,即進(jìn)程在運(yùn)行前一次性的向系統(tǒng)申請它所需要的全部資源(不可預(yù)測資源的使用,利用率低仇冯,降低并發(fā)性)
破壞循環(huán)等待條件:采用這種策略之宿,即把資源事先分類編號,按號分配苛坚,使進(jìn)程在申請比被,占用資源時不會形成環(huán)路。所有進(jìn)程對資源的請求必須嚴(yán)格按資源序號遞增的順序提出(限制和編號實(shí)現(xiàn)困難泼舱,增加系統(tǒng)開銷等缀,有些資源暫時不用也需要先申請,增加了進(jìn)程對資源的占用時間)
死鎖避免
允許進(jìn)程動態(tài)的申請資源娇昙,但系統(tǒng)在進(jìn)行資源分配前尺迂,應(yīng)先計(jì)算此次資源分配的安全性。若此次分配不會導(dǎo)致系統(tǒng)進(jìn)入不安全狀態(tài)涯贞,則將資源你分配給進(jìn)程枪狂,否則,讓進(jìn)程等待宋渔。
所謂安全狀態(tài)州疾,是指系統(tǒng)能按某種進(jìn)程推進(jìn)順序,為每個進(jìn)程分配其所需的資源皇拣,直至滿足每個進(jìn)程對資源的最大需求严蓖,是每個進(jìn)程都可以順序的完成。此時成P1P2P3...為安全序列氧急,如果系統(tǒng)無法找到一個安全序列颗胡,則稱系統(tǒng)處于不安全狀態(tài)。
并非所有的不安全狀態(tài)都是死鎖狀態(tài)吩坝,但當(dāng)系統(tǒng)進(jìn)入不安全狀態(tài)后毒姨,便可能進(jìn)入死鎖狀態(tài);反之钉寝,只要系統(tǒng)處于安全狀態(tài)弧呐,系統(tǒng)便可以避免進(jìn)入死鎖狀態(tài)闸迷。
銀行家算法是最著名的死鎖避免算法。

死鎖的檢測
資源分配圖&&死鎖定理

死鎖解除
1)資源剝奪法俘枫。掛起某些思索進(jìn)程腥沽,并搶占它的資源,將這些資源分配給其他的死鎖進(jìn)程鸠蚪。但應(yīng)防止被掛起的進(jìn)程長時間得不到資源時今阳,而處于資源匱乏的狀態(tài)。
2)進(jìn)程撤銷法茅信。強(qiáng)制撤銷一個或一部分進(jìn)程并剝奪這些進(jìn)程的資源盾舌。撤銷的原則可以按進(jìn)程的優(yōu)先級和撤銷進(jìn)程代價的高低進(jìn)行。
3)進(jìn)程回退法汹押。讓一個或多個進(jìn)程回退到足以回避死鎖的地步矿筝,進(jìn)程回退時資源釋放資源而不是被剝奪。要求系統(tǒng)保持進(jìn)程的歷史信息棚贾,設(shè)置還原點(diǎn)窖维。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市妙痹,隨后出現(xiàn)的幾起案子铸史,更是在濱河造成了極大的恐慌,老刑警劉巖怯伊,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件琳轿,死亡現(xiàn)場離奇詭異,居然都是意外死亡耿芹,警方通過查閱死者的電腦和手機(jī)崭篡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吧秕,“玉大人琉闪,你說我怎么就攤上這事≡冶颍” “怎么了颠毙?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長砂碉。 經(jīng)常有香客問我蛀蜜,道長,這世上最難降的妖魔是什么增蹭? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任滴某,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘壮池。我一直安慰自己偏瓤,他們只是感情好杀怠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布椰憋。 她就那樣靜靜地躺著,像睡著了一般赔退。 火紅的嫁衣襯著肌膚如雪橙依。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天硕旗,我揣著相機(jī)與錄音阴绢,去河邊找鬼狐援。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的渠脉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼委乌,長吁一口氣:“原來是場噩夢啊……” “哼添谊!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起残制,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤立砸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后初茶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體颗祝,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年恼布,在試婚紗的時候發(fā)現(xiàn)自己被綠了螺戳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡折汞,死狀恐怖倔幼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情字支,我是刑警寧澤凤藏,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站堕伪,受9級特大地震影響揖庄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜欠雌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一蹄梢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦禁炒、人聲如沸而咆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽暴备。三九已至,卻和暖如春们豌,著一層夾襖步出監(jiān)牢的瞬間涯捻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工望迎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留障癌,地道東北人。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓辩尊,卻偏偏與公主長得像涛浙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子摄欲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評論 2 355

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