程序飢餓和死鎖

2021-08-10 12:24:17 字數 521 閱讀 4483

飢餓是指系統不能保證某個程序的等待時間上界,從而使該程序長時間等待,當等待時間給程序推進和響應帶來明顯影響時,稱發生了程序飢餓。當飢餓到一定程度的程序所賦予的任務即使完成也不再具有實際意義時稱該程序被餓死。

死鎖是指在多道程式系統中,一組程序中的每乙個程序都無限期等待被該組程序中的另乙個程序所占有且永遠不會釋放的資源。

相同點:二者都是由於競爭資源而引起的。

不同點:

從程序狀態

考慮,死鎖程序都處於等待狀態,忙等待(處於執行或就緒狀態)的程序並非處於等待狀態,但卻可能被餓死;

死鎖程序等待永遠不會被釋放的資源,餓死程序等待會被釋放但卻不會分配給自己的資源,表現為等待時限沒有上界(排隊等待或忙式等待);

死鎖一定發生了迴圈等待,而餓死則不然。這也表明通過資源分配圖可以檢測死鎖存在與否,但卻不能檢測是否有程序餓死;

死鎖一定涉及多個程序,而飢餓或被餓死的程序可能只有乙個。

在飢餓的情形下,系統中有至少乙個程序能正常執行,只是飢餓程序得不到執行機會。而死鎖則可能會最終使整個系統陷入死鎖並崩潰。

併發 死鎖和飢餓

死鎖原理 一組相互競爭系統資源或進行通訊的程序間的 永久 阻塞。當一組程序中的每個程序都在等待某個事件,而只有這組程序中的其他被阻塞程序才可以觸發該事件,這時就稱這組程序發生死鎖。所有死鎖都涉及兩個或多個程序之間對資源需求的衝突。可重用資源是指一次只能供乙個程序安全地使用,並且不會由於使用而耗盡的資...

併發 死鎖和飢餓

死鎖的原理 當一組程序中的每個程序都在等待某個事件 如等待所請求的資源釋放 而只有在這組程序中的其他被阻塞的程序才可以觸發該事件,這是就稱這組程序發生死鎖。因為沒有事件能夠被觸發,故死鎖是永久性的。可重用資源 指一次只能供乙個程序安全地使用,並且不會由於使用而耗盡的資源。如處理器 i o通道 記憶體...

死鎖與飢餓

首先是死鎖。產生死鎖的原因主要有兩個,一是競爭資源,系統提供的資源數量有限,不能滿足每個程序的需求 二是多道程式執行時,程序推進順序不合理。由此可見,發生死鎖時死鎖程序的個數至少是兩個。我們可以舉乙個最簡單的例子來了解一下死鎖 p1 p2 request a request b request b ...