作業系統FCFS護航效果


如果第一個作業的爆發時間是最高的,FCFS可能會受到佇列影響。 就像在現實生活中一樣,如果佇列在路上經過,那麼其他人可能會被堵塞,直到完全通過。 這也可以在作業系統中進行模擬。

如果CPU在就緒佇列的前端獲得較高突發時間的進程,則較低突發時間的進程可能被阻塞,這意味著如果執行中的作業具有非常高的突發時間,則它們可能永遠不會獲得CPU。 這被稱為佇列效應飢餓

範例

在這個例子中,我們有3個進程被命名為P1P2P3。 進程P1的暴發時間最高。

下表中的周轉時間和等待時間通過公式計算,

Turn Around Time = Completion Time - Arrival Time  
    Waiting Time = Turn Around Time - Burst Time

在第一種情況下,雖然流程P1到達佇列中的第一個, 該過程的爆發時間是最高的。 由於排程演算法,我們所遵循的是FCFS,因此CPU將首先執行Process P1。

在這個時間表中,系統的平均等待時間將非常高。 這是因為車隊的影響。 其他進程P2,P3必須等待40個單位時間,儘管他們的爆發時間非常短。 這個時間表遭受飢餓。

進程ID 到達時間 突發時間 完成時間 轉換時間 等待時間
1 0 40 40 40 0
2 1 3 43 42 39
2 2 4 12 8 4
3 1 1 44 43 42

平均等待時間= 81/3

在第二種情況下,如果進程P1本來就已經到達佇列的最後,而其他過程P2P3早於那麼飢餓問題就不存在了。

以下範例顯示了這兩種情況的等待時間的偏差。 雖然時間表的長度是相同的,即44個單位,但是在這個時間表中等待時間將會減少。

進程ID 到達時間 突發時間 完成時間 轉換時間 等待時間
1 1 40 44 43 3
2 0 3 3 3 0
2 2 4 12 8 4
3 0 1 4 4 3