揭秘:“死鎖”四個必要條件的合理解釋

《“死鎖”四個必要條件的合理解釋》分為三個部分:

【1】“死鎖”的含義

【2】“死鎖”的原因及四個必要條件的合理解釋

【3】“死鎖”的預防和解除

image

1.“死鎖”的含義

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

2.“死鎖”產(chǎn)生的原因以及四個必要條件的合理解釋

產(chǎn)生死鎖的原因可歸結(jié)為如下兩點:

(1)競爭資源。當系統(tǒng)中供多個進程共享的資源如打印機、公用隊列等,其數(shù)目不足以滿足進程的需要時,會引起諸進程的競爭而產(chǎn)生死鎖。

(2)進程間推進順序非法。進程在運行過程中,請求和釋放資源的順序不當,也同樣會導致產(chǎn)生進程死鎖。

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

1.互斥(Mutual exclusion):存在這樣一種資源,它在某個時刻只能被分配給一個執(zhí)行緒(也稱為線程)使用;

2.持有(Hold and wait):當請求的資源已被占用從而導致執(zhí)行緒阻塞時,資源占用者不但無需釋放該資源,而且還可以繼續(xù)請求更多資源;

3.不可剝奪(No preemption):執(zhí)行緒獲得到的互斥資源不可被強行剝奪,換句話說,只有資源占用者自己才能釋放資源;

4.環(huán)形等待(Circular wait):若干執(zhí)行緒以不同的次序獲取互斥資源,從而形成環(huán)形等待的局面,想象在由多個執(zhí)行緒組成的環(huán)形鏈中,每個執(zhí)行緒都在等待下一個執(zhí)行緒釋放它持有的資源。

發(fā)現(xiàn)到目前為止,所有的內(nèi)容都可以在課本書籍、百度、論壇、博客上找到,似乎是教條的羅列。

我們發(fā)現(xiàn)看過多次,但每每需要的時候(開發(fā)、筆試、面試)卻總要回頭再看難以擺脫遺忘、記憶的循環(huán)我覺得產(chǎn)生這種現(xiàn)象的原因是因為:停留在機械記憶。

因為我們的教科書、論壇、博客的內(nèi)容十有八九在羅列這些概念~但很少有進一步解釋、闡釋其存在的必然(四個必然條件為什么不多一個,又為什么不少一個?)及其內(nèi)在邏輯。

或許下面的闡釋能讓你再遇到這個問題時,可以不翻教科書,不上網(wǎng)百度就能侃侃而談~

<1>.“死鎖”產(chǎn)生有幾個必要條件?

“死鎖”中“死”音通“四”是四個條件。(雖然很牽強,但對于識記,你會發(fā)現(xiàn)很有用?。?/p>

<2>.“四”鎖的必要條件都是指哪些?

1.資源互斥性(資源的屬性,不會同時屬于/分配給多個進程)->2.持有和等待(進程被分配(持有)資源后而且在等待(申請)其他資源)->3不可剝奪(對于已分配的資源,不可再強制收回來)->4.環(huán)形等待(進程之間資源等待形成相互依賴,互不禮讓)

用再通俗的話,進一步解釋這個逐漸升級的狀況。1->2->3->4是資源分配逐漸條件遞進、加強、升級的過程:資源是互斥的每次屬于一個進程(1.互斥);

資源分配了我占著而且我還要申請其他資源(2.持有和等待);

我占著的資源你沒法拿,你占著的資源我沒法拿(3.不可剝奪);

我申請的資源在你那,你申請的資源在我這(4.循環(huán)等待),最終形成了一個相互占有、相互等待的僵持局面~

3.“死鎖”的預防和解除

理解了死鎖的原因,尤其是產(chǎn)生死鎖的四個必要條件,就可以最大可能地避免、預防和解除死鎖,消除產(chǎn)生死鎖的四個必要條件中的任何一個都可以預防和解除死鎖。

不難看出,在死鎖的四個必要條件中,第二、三和四項條件比較容易消除。

1、靜態(tài)分配:采用資源靜態(tài)分配策略(進程資源靜態(tài)分配方式是指一個進程在建立時就分配了它需要的全部資源),破壞"部分分配"條件;

2、可剝奪:允許進程剝奪使用其他進程占有的資源,從而破壞"不可剝奪"條件;

3、有序分配:采用資源有序分配法,破壞"環(huán)路"條件。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、競態(tài)條件: 定義:競態(tài)條件指的是一種特殊的情況,在這種情況下各個執(zhí)行單元以一種沒有邏輯的順序執(zhí)行動作,從而導致...
    Hughman閱讀 1,442評論 0 7
  • 死鎖的概念 死鎖的定義 在多道程序系統(tǒng)中,由于多個進程的并發(fā)執(zhí)行,改善了系統(tǒng)資源的利用率并提高了系統(tǒng)的處理能力。然...
    CodeKing2017閱讀 1,681評論 0 4
  • 一.死鎖的概念以及產(chǎn)生死鎖的原因 1.死鎖的定義 在多道程序系統(tǒng)中,由于多個進程的并發(fā)執(zhí)行,改善了系統(tǒng)資源的利用率...
    Chasel_H閱讀 1,312評論 0 4
  • 1 死鎖 死鎖是指兩個或兩個以上的進程因競爭資源而造成的一種互相等待的現(xiàn)象,若無外力作用,這些進程都將無法向前推進...
    HRADPX閱讀 4,026評論 0 11
  • 在季節(jié)交換的時刻,相信很多愛美的女性朋友會將衣柜過季的衣物及時清理,作為女性的我也不例外,每一次清理衣物的時刻就是...
    艾尚瑄萱閱讀 522評論 0 1

友情鏈接更多精彩內(nèi)容