昨天講完了作業系統的程序、進程與多工處理,今天我們來講講排程。昨天講到作業系統能夠多工處理,那要讓他能夠達到「多工」我們也要幫他安排行程吧!如果沒有好好分配的話才達不到多工勒,所以排程也很重要喔!
排程(Scheduling):決定哪個進程在何時執行的過程。作業系統使用不同的排程演算法來確定如何分配 CPU 時間給各個進程,下面來介紹幾個常見的排程。
1.先來先服務(First Come, First Serve, FCFS):
進程按進入系統的先後順序執行。進程進入 CPU 後會一直執行到完成,適合批處理系統,但不適合互動式系統,因為可能導致長時間等待。
2.短作業優先(Shortest Job First, SJF):
優先執行執行時間最短的進程,這樣可以最小化平均等待時間,但需要預測每個進程的執行時間,在現實中不容易達成。
3.優先權排程(Priority Scheduling):
給每個進程設定優先級,優先級高的進程會優先獲得 CPU 資源。可能導致「饑餓問題」,使低優先級的進程永遠得不到執行。
4.輪轉排程(Round Robin, RR):
每個進程在 CPU 上執行固定的時間片(Time Slice),若時間片用完且未完成,作業系統將其切換到等待隊列中,並給下一個進程 CPU 時間。是一種公平的排程方式,特別適合互動式系統。
5.多級隊列排程(Multilevel Queue Scheduling):
將進程分成多個隊列,每個隊列可以使用不同的排程策略。例如,系統進程可能會分配到高優先級隊列,使用短作業優先,而普通進程則分配到低優先級隊列,使用先來先服務。