94.死鎖預(yù)防

參考http://blog.sina.com.cn/s/blog_5e3604840100ddgq.html

deadlocks(死鎖)

所謂死鎖: 是指兩個或兩個以上的進程在執(zhí)行過程中,因爭奪資源而造成的一種互相等待的現(xiàn)象,若無外力作用,它們都將無法推進下去.此時稱系統(tǒng)處于死鎖狀態(tài)或系統(tǒng)產(chǎn)生了死鎖,這些永遠(yuǎn)在互相等竺的進程稱為死鎖進程.

由于資源占用是互斥的芳绩,當(dāng)某個進程提出申請資源后,使得有關(guān)進程在無外力協(xié)助下闯袒,永遠(yuǎn)分配不到必需的資源而無法繼續(xù)運行谒养,這就產(chǎn)生了一種特殊現(xiàn)象死鎖。

一種情形身隐,此時執(zhí)行程序中兩個或多個線程發(fā)生永久堵塞(等待)廷区,每個線程都在等待被其他線程占用并堵塞了的資源。例如贾铝,如果線程A鎖住了記錄1并等待記錄2隙轻,而線程B鎖住了記錄2并等待記錄1,這樣兩個線程就發(fā)生了死鎖現(xiàn)象垢揩。

計算機系統(tǒng)中,如果系統(tǒng)的資源分配策略不當(dāng)玖绿,更常見的可能是程序員寫的程序有錯誤等,則會導(dǎo)致進程因競爭資源不當(dāng)而產(chǎn)生死鎖的現(xiàn)象叁巨。

產(chǎn)生死鎖的原因主要是:

(1) 因為系統(tǒng)資源不足斑匪。

(2) 進程運行推進的順序不合適。

(3) 資源分配不當(dāng)?shù)取?/p>

如果系統(tǒng)資源充足锋勺,進程的資源請求都能夠得到滿足蚀瘸,死鎖出現(xiàn)的可能性就很低,否則

就會因爭奪有限的資源而陷入死鎖庶橱。其次贮勃,進程運行推進順序與速度不同,也可能產(chǎn)生死鎖苏章。

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

(1) 互斥條件:一個資源每次只能被一個進程使用寂嘉。

(2) 請求與保持條件:一個進程因請求資源而阻塞時奏瞬,對已獲得的資源保持不放。

(3) 不剝奪條件:進程已獲得的資源泉孩,在末使用完之前硼端,不能強行剝奪。

(4) 循環(huán)等待條件:若干進程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系寓搬。

這四個條件是死鎖的必要條件显蝌,只要系統(tǒng)發(fā)生死鎖,這些條件必然成立订咸,而只要上述條件之

一不滿足曼尊,就不會發(fā)生死鎖。

死鎖的解除與預(yù)防

理解了死鎖的原因脏嚷,尤其是產(chǎn)生死鎖的四個必要條件骆撇,就可以最大可能地避免、預(yù)防和解除死鎖父叙。所以神郊,在系統(tǒng)設(shè)計、進程調(diào)度等方面注意如何不讓這四個必要條件成立趾唱,如何確定資源的合理分配算法涌乳,避免進程永久占據(jù)系統(tǒng)資源。此外甜癞,也要防止進程在處于等待狀態(tài)的情況下占用資源,在系統(tǒng)運行過程中夕晓,對進程發(fā)出的每一個系統(tǒng)能夠滿足的資源申請進行動態(tài)檢查,并根據(jù)檢查結(jié)果決定是否分配資源悠咱,若分配后系統(tǒng)可能發(fā)生死鎖蒸辆,則不予分配,否則予以分配 析既。因此躬贡,對資源的分配要給予合理的規(guī)劃。

一眼坏、有序資源分配法

這種算法資源按某種規(guī)則系統(tǒng)中的所有資源統(tǒng)一編號(例如打印機為1拂玻、磁帶機為2、磁盤為3宰译、等等)檐蚜,申請時必須以上升的次序。系統(tǒng)要求申請進程:

1囤屹、對它所必須使用的而且屬于同一類的所有資源熬甚,必須一次申請完逢渔;

2肋坚、在申請不同類資源時,必須按各類設(shè)備的編號依次申請。例如:進程PA智厌,使用資源的順序是R1诲泌,R2; 進程PB铣鹏,使用資源的順序是R2敷扫,R1;若采用動態(tài)分配有可能形成環(huán)路條件诚卸,造成死鎖葵第。

采用有序資源分配法:R1的編號為1,R2的編號為2合溺;

PA:申請次序應(yīng)是:R1卒密,R2

PB:申請次序應(yīng)是:R1,R2

這樣就破壞了環(huán)路條件棠赛,避免了死鎖的發(fā)生

二哮奇、銀行算法

避免死鎖算法中最有代表性的算法是Dijkstra E.W 于1968年提出的銀行家算法:

該算法需要檢查申請者對資源的最大需求量,如果系統(tǒng)現(xiàn)存的各類資源可以滿足申請者的請求睛约,就滿足申請者的請求鼎俘。

這樣申請者就可很快完成其計算,然后釋放它占用的資源辩涝,從而保證了系統(tǒng)中的所有進程都能完成贸伐,所以可避免死鎖的發(fā)生。

死鎖排除的方法

1怔揩、撤消陷于死鎖的全部進程棍丐;

2、逐個撤消陷于死鎖的進程沧踏,直到死鎖不存在歌逢;

3、從陷于死鎖的進程中逐個強迫放棄所占用的資源翘狱,直至死鎖消失秘案。

4、從另外一些進程那里強行剝奪足夠數(shù)量的資源分配給死鎖進程潦匈,以解除死鎖狀態(tài)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末阱高,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子茬缩,更是在濱河造成了極大的恐慌赤惊,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凰锡,死亡現(xiàn)場離奇詭異未舟,居然都是意外死亡圈暗,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門裕膀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來员串,“玉大人,你說我怎么就攤上這事昼扛〈缙耄” “怎么了?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵抄谐,是天一觀的道長渺鹦。 經(jīng)常有香客問我,道長蛹含,這世上最難降的妖魔是什么海铆? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮挣惰,結(jié)果婚禮上卧斟,老公的妹妹穿的比我還像新娘。我一直安慰自己憎茂,他們只是感情好珍语,可當(dāng)我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著竖幔,像睡著了一般板乙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拳氢,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天募逞,我揣著相機與錄音,去河邊找鬼馋评。 笑死放接,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的留特。 我是一名探鬼主播纠脾,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蜕青!你這毒婦竟也來了苟蹈?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤右核,失蹤者是張志新(化名)和其女友劉穎慧脱,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贺喝,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡菱鸥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年宗兼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片采缚。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡针炉,死狀恐怖挠他,靈堂內(nèi)的尸體忽然破棺而出扳抽,到底是詐尸還是另有隱情,我是刑警寧澤殖侵,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布贸呢,位于F島的核電站,受9級特大地震影響拢军,放射性物質(zhì)發(fā)生泄漏楞陷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一茉唉、第九天 我趴在偏房一處隱蔽的房頂上張望固蛾。 院中可真熱鬧,春花似錦度陆、人聲如沸艾凯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽趾诗。三九已至,卻和暖如春蹬蚁,著一層夾襖步出監(jiān)牢的瞬間恃泪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工犀斋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留贝乎,地道東北人。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓叽粹,卻偏偏與公主長得像糕非,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子球榆,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,047評論 2 355

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

  • 1朽肥、競態(tài)條件: 定義:競態(tài)條件指的是一種特殊的情況,在這種情況下各個執(zhí)行單元以一種沒有邏輯的順序執(zhí)行動作持钉,從而導(dǎo)致...
    Hughman閱讀 1,293評論 0 7
  • 20.1死鎖概念 由于競爭資源或者通信關(guān)系衡招,兩個或更多線程在執(zhí)行中出現(xiàn),永遠(yuǎn)相互等待只能由其他進程引發(fā)的事件 進程...
    龜龜51閱讀 643評論 0 1
  • 0×1.EIGRP特性與基本配置EIGRP(Enhanced Interior Gateway Routing P...
    Zero___閱讀 2,200評論 0 2
  • 人生的列車緩緩而行每强,到了一個不上不下的年紀(jì)始腾,一個年輕的一無所有的年紀(jì)州刽。沒嘗遍酸甜苦辣,說不出個喜怒哀樂浪箭。只能徒然自...
    周霸爺閱讀 310評論 3 3
  • 包 一個源文件以包聲明開始: packagefoo.barfunbza() {}classGoo{}//... 源...
    松愛家的小秦閱讀 253評論 0 0