進程飢餓定義
進程飢餓,即為starvation,指當等待時間給進程推進和回響帶來明顯影響稱為進程飢餓。當飢餓到一定程度的進程在等待到即使完成也無實際意義的時候稱為飢餓死亡。
亦有定義為:由於別的並發的激活的過程持久占有所需資源,使某個異步過程載客預測的時間內不能被激活。
產生進程飢餓的原因
產生飢餓的主要原因是:在一個動態系統中,對於每類系統資源,作業系統需要確定一個分配策略,當多個進程同時申請某類資源時,由分配策略確定資源分配給進程的次序。
有時資源分配策略可能是不公平的,即不能保證等待時間上界的存在。在這種情況下,即使系統沒有發生死鎖,某些進程也可能會長時間等待.當等待時間給進程推進和回響帶來明顯影響時,稱發生了進程飢餓,當飢餓到一定程度的進程所賦予的任務即使完成也不再具有實際意義時稱該進程被餓死。
舉個例子,當有多個進程需要列印檔案時,如果系統分配印表機的策略是最短檔案優先,那么長檔案的列印任務將由於短檔案的源源不斷到來而被無限期推遲,導致最終的飢餓甚至餓死。