2013-10-20 53 views
3

死鎖 - 兩個或更多的競爭行爲每個都在等待另一個完成的情況,因此從未做過。死鎖與無限期延期有什麼區別?

無限期推遲 - 而其他進程收到系統的關注無限期拖延進程的調度

這2個方面似乎非常相似。我如何區分他們?

+0

你這樣說:第一個涉及兩個不同的進程交互,第二個是調度器和單個進程的問題,與其他進程沒有直接關係... –

+0

你可以舉一個具體的例子嗎?我不清楚。 – drum

+1

當優先級較低的線程餓死並且無法接收系統資源時,無限期延遲爲飢餓,因爲具有較高優先級的其他線程在從其他更高優先級的線程釋放後立即獲取資源。飢餓與僵局無關,甚至在沒有死鎖的情況下也可能發生。 – user2784234

回答

3

在這種持續過程等着它使 資源分配和進程調度決策的任何系統,可以 而其他 過程接收系統的關注無限期拖延進程的調度。這種情況下,不同 稱爲無限期推遲,無限期封鎖,飢餓, 可作死鎖

從具有破壞性:

http://wps.prenhall.com/esm_deitel_os_3/17/4402/1127072.cw/index.html

Havender的條件僵局(1968) - 7.2.1

•有一個進程的循環列表,每個進程都需要一個資源擁有者 在列表中。

•資源不能共享。

•只有所有者才能釋放資源

•進程可以容納的資源,而 請求另一個

來源:

http://www.cs.auckland.ac.nz/~robert-s/415.340/lectures_1997/lecture35.pdf

所以無限期推遲原因1點的過程在其他人繼續正常工作的同時遭受損失,這可能是由於調度不當或其他原因造成的,這種情況在哪裏無限期推遲的進程總是比同一資源之後的所有其他進程具有更低的優先級。在稍後的時間,它可能以足夠高的優先級獲得資源。

進程正在請求另一個進程佔用的資源時會導致死鎖。這個過程(A)不會釋放資源,直到它獲得它正在請求的另一個資源,這偶然地由另一個進程(B)持有,它將不會釋放它,直到它接收到另一個進程(C)持有的資源爲止(A)之前不會釋放它。該場景涉及3個流程,A,B,C;但它可能涉及2個或更多進程的任何「圈」。

2

如果兩個進程處於死鎖狀態,那麼他們不可能做任何有用的工作 - 因爲他們彼此依賴,並且都不會屈服。

如果過程無限期推遲,至少在理論上這種過程可能繼續下去,並在未來某個時間做一些有用的工作。如果其他進程停止濫用資源或簡單地退出,或者如果您提高進程的優先級被無限期推遲,則可能發生這種情況。

相關問題