三.(2)死鎖 銀行家算法

多道程序系統借助并發執行改善資源利用率,提高系統吞吐量,但可能發生一種危險——死鎖。

死鎖(Deadlock):指多個進程在運行過程中,因爭奪資源而造成的一種僵局。當進程處于這種狀態時,若無外力作用,它們都將無法再向前推進。

產生死鎖的原因可歸結為如下兩點:

1.競爭資源。系統中供多個進程共享的資源如打印機、公用隊列等的數目不滿足需要時,會引起資源競爭而產生死鎖。

2.進程間推進順序非法。進程在運行過程中,請求和釋放資源的順序不當,同樣會導致死鎖。

1.競爭資源引起進程死鎖

可把系統中的資源分為兩類:

v可剝奪和非剝奪性資源

?可剝奪性資源:分配給進程后可以被高優先級的進程剝奪。如CPU和主存。

?不可剝奪性資源:分配給進程后只能在進程用完后釋放。如磁帶機、打印機等。

v永久性資源和臨時性資源

?永久性:打印機。可順序重復使用

?臨時性:進程產生被其他進程短暫使用的資源,如數據資源:“生產者/消費者”算法中的信號量。。它可能引起死鎖。

2.進程推進順序不當引起死鎖

v進程在運行中具有異步性特征,多個進程按向前推進的順序有兩種情況:

1)推進順序合法

2)推進順序非法

3.形成死鎖的四個必要條件

(四個條件都具備就會死鎖,缺一就不會死鎖)

①互斥條件:進程對所分配到的資源進行排他性使用

②請求和保持條件:進程已經保持了至少一個資源,又提出新的資源請求,而新請求資源被其他進程占有只能造成自身進程阻塞,但對自己已獲得的其他資源保持不放,必然影響其他進程。

③不剝奪條件:進程已獲得的資源未使用完之前不能被剝奪,只能在使用完時由自己釋放。

④環路等待條件

4.處理死鎖的基本方法

事先預防:

①預防死鎖

v設置限制條件,破壞四個必要條件的一個或幾個,預防發生死鎖。

v較易實現。限制條件的嚴格也會導致系統資源利用率和系統吞吐量降低。

②避免死鎖

v不須事先限制,破壞四個必要條件,而是在資源的動態分配過程中,用某種方法去防止系統進入不安全狀態,從而避免發生死鎖。

v這種事先加以較弱限制的方法,實現上有一定難度,但可獲較高的資源利用率及系統吞吐量,目前在較完善的系統中,常用此方法來避免發生死鎖。

事后處理

③檢測死鎖。

v允許系統運行過程中發生死鎖,但通過系統檢測機構可及時的檢測出,能精確確定與死鎖有關的進程和資源;然后采取適當的措施,從系統中將已發生的死鎖清除掉。

④解除死鎖。

v與死鎖檢測配套的一種措施。

v常用的實施方法:撤銷或掛起一些進程,以便回收一些資源并將他們分配給已阻塞進程,使之轉為就緒以繼續運行。

v死鎖的檢測與解除措施,有可能使系統獲得較好的資源利用率和吞吐量(死鎖幾率不一定很高),但在實現上難度也最大。

銀行家算法避免死鎖

? 最有代表性的避免死鎖的算法,是Dijkstra的銀行家算法。由于該算法能用于銀行系統現金貸款的發放而得名。

? 【思路描述】:隨時對系統中的所有資源信息進行統計,包括每種資源的數量、已分配給各進程的數量;每當進程提出某種資源請求時判斷該請求分配后是否安全,如果安全才分配。對每個資源請求的處理都要保證系統始終從一個安全狀態到另一個安全狀態。


死鎖的檢測與解除

v當系統為進程分配資源時,若未采取任何限制性措施,則系統必須提供檢測和解除死鎖的手段,為此系統必須:

1.保存有關資源的請求和分配信息;

2.提供一種算法,以利用這些信息來檢測系統是否已進入死鎖狀態。


死鎖定理

利用資源分配圖簡化法來檢測死鎖。

簡化方法如下:

? 1.在資源分配圖中找出一個既不阻塞又非獨立的進程結點Pi,在順利的情況下運行完畢,釋放其占有的全部資源。

? 2.由于釋放了資源,這樣能使其它被阻塞的進程獲得資源繼續運行。消去了Pi的邊。

? 3.經過一系列簡化后,若能消去圖中所有邊,使結點都孤立,稱該圖是可完全簡化的。

S狀態為死鎖狀態的充分條件是當且僅當S狀態的資源分配圖是不可完全簡化的。<死鎖定理>


死鎖的解除

當發現進程死鎖時,便應立即把它們從死鎖狀態中解脫出來。常采用的方法是:

1.剝奪資源。從其他進程剝奪足夠數量的資源給死鎖進程以解除死鎖狀態。

2.撤銷進程。最簡單的是讓全部進程都死掉;溫和一點的是按照某種順序逐個撤銷進程,直至有足夠的資源可用,使死鎖狀態消除為止。


?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,818評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,185評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,656評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,647評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,446評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,951評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,041評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,189評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,718評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,602評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,800評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,316評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,045評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,419評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,671評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,420評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,755評論 2 371

推薦閱讀更多精彩內容

  • 關于死鎖 多道程序系統借助并發執行改善資源利用率,提高系統吞吐量,但可能發生一種危險——死鎖。 死鎖(Deadlo...
    盆栽木只閱讀 1,154評論 0 0
  • 死鎖的概念 死鎖的定義 在多道程序系統中,由于多個進程的并發執行,改善了系統資源的利用率并提高了系統的處理能力。然...
    CodeKing2017閱讀 1,468評論 0 4
  • 一.死鎖的概念以及產生死鎖的原因 1.死鎖的定義 在多道程序系統中,由于多個進程的并發執行,改善了系統資源的利用率...
    Chasel_H閱讀 1,115評論 0 4
  • 假期后的第一個周末,宜發呆,曬太陽~ 從忙碌的假期回來,由于客戶還在放假中,郵件并沒有自己想象中那樣堆積如山!欣然...
    莫佳佳閱讀 314評論 0 0
  • 看來我反對朱熹是對的。 王陽明先生的徒弟認同并傳承著先生的理論,有好事者會說,既凡存在,就有存在的道理。是,這么說...
    姜天合閱讀 205評論 0 2