排程(Schedule)

作者:陳雲飛&許文達&夏進

排程(Schedule)

當資源有限而需要被服務的對象很多時,服務勢必有先後順序,順序關係稱之為「排程」(Schedule)。為了提供多使用者及多程式的服務,需要對這些服務需求進行排程,安排服務順序所提出的方法稱之為排程演算法(Schedule algorithm)。實現排程演算法的程式稱為排程程式(Scheduler)。針對使用CPU服務的排程則可以稱之為CPU排程或程序排程(Process Scheduling)。

CPU排程演算法(CPU scheduling)的目的是找出下一個可以取得CPU使用權的行程,也就是決定就緒狀態下的哪個行程可以進入執行中狀態,為了解決這個問題所發展出來的CPU排程演算法相當多,常用的有下列幾種:

1.先來先做

(First-Come First-Served, FCFS):

其原理是依行程到達的先後順序來執行,先來的先做,直到完成再輪到下一個,如同排隊買票。此演算法雖容易實作,但它忽略了某些重要的因素,因此實務上並不實際。萬一CPU分配給一需要很長的執行時間的行程,但是後面卻排了一堆急著要執行的短行程,結果短行程反而需很長的時間才能輪到。

2.最短的工作先做

(Shortest Job First, SJF):

其原理是先檢查一遍在就緒狀態下的所有行程,將所需執行時間從小到大排序,然後從時間最短的行程開始執行。一般而言,此演算法的平均等待時間是最佳的,問題在於是仰賴對於未來的猜測計算,作業系統須事先「知道」每個行程的執行時間才能安排順序。因此,作業系統會根據一些經驗值和機率因子來推測,若推測與事實相差太遠,則執行效能就不如預期。

AddThis Sharing

百科問與答

暫無討論