調度算法是指:根據系統的資源分配策略所規定的資源分配算法。常見的進程調度算法有:
1.先來先去服務
2.時間片輪轉法
3.多級反饋隊列算法
4.最短進程優先
5.最短剩余時間優先
6.最高響應比優先
7.多級反饋隊列調度算法
一、先來先去服務
先來先去服務調度算法是一種最簡單的調度算法,也稱為先進先出或嚴格排隊方案。當每個進程就緒后,它加入就緒隊列。當前正運行的進程停止執行,選擇在就緒隊列中存在時間最長的進程運行。該算法既可以用於作業調度,也可以用於進程調度。先來先去服務比較適合於常作業(進程),而不利於段作業(進程)。
二、時間片輪轉法
輪轉法是基於適中的搶占策略的,以一個周期性間隔產生時鍾中斷,當中斷發生后,當前正在運行的進程被置於就緒隊列中,然后基於先來先去服務策略選擇下一個就緒作業的運行。這種技術也稱為時間片,因為每個進程再被搶占之前都給定一片時間。
三、最短進程優先
最短進程優先是一個非搶占策略,他的原則是下一次選擇預計處理時間最短的進程,因此短進程將會越過長作業,跳至隊列頭。該算法即可用於作業調度,也可用於進程調度。但是他對長作業不利,不能保證緊迫性作業(進程)被及時處理,作業的長短只是被估算出來的。
四、最短剩余時間優先
最短剩余時間是針對最短進程優先增加了搶占機制的版本。在這種情況下,進程調度總是選擇預期剩余時間最短的進程。當一個進程加入到就緒隊列時,他可能比當前運行的進程具有更短的剩余時間,因此只要新進程就緒,調度程序就能可能搶占當前正在運行的進程。像最短進程優先一樣,調度程序正在執行選擇函數是必須有關於處理時間的估計,並且存在長進程飢餓的危險。
五、最高響應比優先
根據比率:R=(w+s)/s (R為響應比,w為等待處理的時間,s為預計的服務時間)
如果該進程被立即調用,則R值等於歸一化周轉時間(周轉時間和服務時間的比率)。R最小值為1.0,只有第一個進入系統的進程才能達到該值。調度規則為:當前進程完成或被阻塞時,選擇R值最大的就緒進程,它說明了進程的年齡。當偏向短作業時,長進程由於得不到服務,等待時間不斷增加,從而增加比值,最終在競爭中贏了短進程。
和最短進程優先、最短剩余時間優先一樣,使用最高響應比策略需要估計預計服務時間。
六、反饋法
如果沒有關於進程相對長度的任何信息,則最短進程優先,最短剩余時間、最高響應優先比都不能使用。另一種導致偏向短作業的方法是處罰運行時間較長的作業,換句話說,如果不能獲得剩余的執行時間,那就關注已執行了的時間。
方法為:調度基於被搶占原則(按時間片)並使用動態優先級機制。當一個進程第一次進入系統中時,他被放置在一個優先級隊列中,當第一次被搶占后並返回就緒狀態時,它被放置在下一個低優先級隊列中,在隨后的時間里,每當被搶占時,他被降級到下一個低優先級隊列中。一個短進程很快被執行完,不會在就緒隊列中降很多級,一個長進程會逐漸降級。因此先到的進程和短進程優先於長進程和老進程。在每個隊列中,除了優先級在最低的隊列中之外,都是用簡單的先來先去服務機制,一旦一個進程處於優先級最低的隊列中,它就不可能在降級,但會重復的返回該隊列,直到運行結束。因此,該隊列課按照輪轉方式調度。
七、多級反饋隊列調度算法
多級反饋隊列算法,不必事先知道各種進程所需要執行的時間,他是當前被公認的一種較好的進程調度算法。其實施過程如下:
1)設置多個就緒隊列,並為各個隊列賦予不同的優先級。在優先權越高的隊列中,為每個進程所規定的執行時間片就越小。
2)當一個新進程進入內存后,首先放入第一隊列的末尾,按照先來先去原則排隊等候調度。如果他能在一個時間片中完成,便可撤離;如果未完成,就轉入第二隊列的末尾,同樣等待調度.....如此下去,當一個長作業(進程)從第一隊列依次將到第n隊列(最后隊列)后,便按第n隊列時間片輪轉運行。
3)僅當第一隊列空閑的時候,調度程序才調度第二隊列中的進程運行;僅當第1到(i-1)隊列空時,才會調度第i隊列中的進程運行,並執行相應的時間片輪轉。
4)如果處理機正在處理第i隊列中某進程,又有新進程進入優先權較高的隊列,則此新隊列搶占正在運行的處理機,並把正在運行的進程放在第i隊列的隊尾。