死鎖了,怎麼辦?

2021-07-25 03:29:05 字數 1024 閱讀 7449

早晨,迷糊的兩個室友乙個拿了牙膏,乙個拿了牙刷。兩個人同時,想拿到對方的東西,好在乙個室友發現自己拿錯了,相視一笑,說句調侃的話,就完事啦。

如果在計算機中,只用一套牙膏牙刷。此時兩個程序,迴圈等待,便構成了死鎖。聽老師說這是個很嚴肅的問題,我們要認真對待(嚴肅臉)。

那麼死鎖了,怎麼辦呢?老師說,書上都寫著。(鴉雀無聲)好嘛,還是看書吧。

死鎖條件和模型
死鎖預防
策略是:防止死鎖條件的發生,此處是介紹間接的死鎖預防方法(直接的死鎖預防方法見死鎖檢測)。

死鎖避免
策略:如果乙個新程序的資源需求會導致死鎖,則拒絕啟動這個新程序。僅當對所有j rj

≥c(n

+1)j

+∑ni

=1ci

j

時才啟動乙個新程序pn

+1也就是說,只有當前所有程序的最大請求量加上新的程序請求可以被剩餘資源滿足時,才能啟動該程序。

這裡通過使用對死鎖模型的使用,試**決死鎖問題。

來乙個dijkstra(自從學了os,才發現dijkstra是真膩害)提出的銀行家演算法。

以下提及的安全狀態是,至少有乙個資源分配序列不會導致死鎖(即所有程序都能執行結束);不安全狀態是,無資源分配序列不會導致死鎖,也就是一定會產生死鎖。

死鎖檢測
死鎖預防通過謹慎的限制資源訪問和程序之間強加約束來解決的。

死鎖檢測,則放縱了程序的貪婪的慾望,只要能批准的資源請求一律批准,同時有週期得執行檢測迴圈等待的演算法。

大書,又給我了方法。

綜合的策略
死鎖,

事前要避免;事後要檢測,

無論哪一套,就是破條件。

Python 多執行緒中死鎖了怎麼辦?

就好像在現實社會中,男女雙方在鬧彆扭之後,都在等待對方先道歉。如果雙方都這樣固執地等待對方先開口,弄不好,就 over 了。儘管死鎖很少發生,但一旦發生就會造成應用的停止響應。下面看乙個死鎖的例子 import threading import time class mythread1 thread...

失戀了怎麼辦?

蘇格拉底 孩子,為什麼悲傷?失戀者 我失戀了。蘇格拉底 哦,這很正常。如果失戀了沒有悲傷,戀愛大概也就沒有什麼味道了。可是,年輕人,我怎麼發現你對失戀的投入甚至比你對戀愛的投入還要傾心呢?失戀者 到手的葡萄給丟了,這份遺憾,這份失落,您非個中人,怎知其中的酸楚啊。蘇格拉底 丟了就丟了,何不繼續向前走...

焦慮了怎麼辦?

閱讀本文大概需要 3 分鐘。最近節奏有點亂了,沒有鍛鍊身體,精神狀態也很疲憊,今天差點食言沒有發文,要求自己每週一次更新頻率並不高,為什麼還是做不好呢?我反思了下,可能是慾望,什麼事情都想做一下,好幾個事情都列入了代辦事項,每天忙的似乎很充實,實則內心非常的空虛 焦慮,無法進入心流狀態,自然效率低下...