先到達的作業先被分配到 CPU,直到完成為止。
優點:
- 簡單易懂且易於實現。
- 不會出現饑餓問題,因為每個作業都會被處理。
缺點:
- 可能導致長時間的等待,特別是當長作業在短作業之前到達時(稱為「車隊效應」)。
- 平均等待時間可能較長,因為等待時間取決於先前作業的執行時間。
2. 依序循環演算法(Round Robin, RR)
說明: RR 演算法給每個作業分配一個固定的時間片(time slice),並按循環順序輪流分配 CPU 給每個作業。當一個作業的時間片用完時,若作業未完成,則將其放回隊列尾部,等待下一輪的 CPU 分配。
優點:
- 平均等待時間較短,特別是在短作業較多的情況下。
- 每個作業都會定期獲得 CPU 資源,避免了饑餓問題。
缺點:
- 上下文切換的開銷較大,特別是當時間片設置較短時。
- 如果時間片設置過長,RR 可能會退化為 FCFS。
3. 最短作業優先演算法(Shortest Job First, SJF)
說明: SJF 演算法選擇處理最短的作業,即預計執行時間最短的作業先被分配到 CPU。這可以是非搶佔式(Non-preemptive)或搶佔式(Preemptive),搶佔式版本稱為最短剩餘時間優先(Shortest Remaining Time First, SRTF)。
優點:
- 平均等待時間最短,因為短作業優先處理減少了後續作業的等待時間。
- 效率高,特別適合短作業多於長作業的情況。
缺點:
- 需要預知每個作業的執行時間,這在現實中通常是不可能的。
- 可能導致長作業的饑餓問題,特別是當短作業不斷到達時。
這三種排程演算法各有其適用的場景和特點,選擇合適的演算法需要根據系統的具體需求和作業負載特性來決定。