死鎖和飢餓的主要區別
死鎖和飢餓的主要區別是什麼?
答:飢餓與死鎖有一定聯繫:二者都是由於競爭資源而引起的,但又有明顯差別,主要表現在如下幾個方面:
(1)從進程狀態考慮,死鎖進程都處於等待狀態,忙式等待(處於運行或就緒狀態)的進程並非處於等待狀態,但卻可能被餓死;
(2)死鎖進程等待永遠不會被釋放的資源,餓死進程等待會被釋放但卻不會分配給自己的資源,表現為等待時限沒有上界(排隊等待或忙式等待);
(3)死鎖一定發生了循環等待,而餓死則不然。這也表明通過資源分配圖可以檢測死鎖存在與否,但卻不能檢測是否有進程餓死;
(4)死鎖一定涉及多個進程,而飢餓或被餓死的進程可能只有一個。
飢餓和餓死與資源分配策略有關,因而防止飢餓與餓死可從公平性考慮,確保所有進程不被忽視,如FCFS分配演算法。