1. 先來先服務(wù) (FCFS)
在所有調(diào)度算法中,最簡單的是非搶占式的FCFS算法。既可用于作業(yè)調(diào)度,也可用于進程調(diào)度捌朴。每次調(diào)度是從就緒隊列中選擇一個最先進入該隊列的進程,為之分配處理機张抄,使之投入運行砂蔽。該進程一直運行到完成或發(fā)生某事件而阻塞后才放棄處理機。
優(yōu)點:易于理解且實現(xiàn)簡單署惯,只需要一個隊列(FIFO)左驾,且相當公平
缺點:比較有利于長進程,而不利于短進程极谊,有利于CPU 繁忙的進程诡右,而不利于I/O 繁忙的進程
2. 最短作業(yè)優(yōu)先(SJF)/短進程優(yōu)先(SPN)
對預計執(zhí)行時間短的進程優(yōu)先分派處理機。通常后來的短進程不搶先正在執(zhí)行的進程轻猖。
優(yōu)點:相比FCFS 算法帆吻,該算法可改善平均周轉(zhuǎn)時間和平均帶權(quán)周轉(zhuǎn)時間,縮短進程的等待時間咙边,提高系統(tǒng)的吞吐量猜煮。
缺點:對長進程非常不利,可能長時間得不到執(zhí)行败许,且未能依據(jù)進程的緊迫程度來劃分執(zhí)行的優(yōu)先級友瘤,以及難以準確估計進程的執(zhí)行時間,從而影響調(diào)度性能檐束。
3. 最高響應比優(yōu)先法(HRRN)
最高響應比優(yōu)先法(HRRN)是對FCFS方式和SJF方式的一種綜合平衡。FCFS方式只考慮每個作業(yè)的等待時間而未考慮執(zhí)行時間的長短束倍,而SJF方式只考慮執(zhí)行時間而未考慮等待時間的長短被丧。HRRN調(diào)度策略同時考慮每個作業(yè)的等待時間長短和估計需要的執(zhí)行時間長短盟戏,從中選出響應比最高的作業(yè)投入執(zhí)行。這樣甥桂,即使是長作業(yè)柿究,隨著它等待時間的增加,W / T也就隨著增加黄选,也就有機會獲得調(diào)度執(zhí)行蝇摸。這種算法是介于FCFS和SJF之間的一種折中算法。
響應比R定義如下: R =(W+T)/T = 1+W/T
其中T為該作業(yè)估計需要的執(zhí)行時間办陷,W為作業(yè)在后備狀態(tài)隊列中的等待時間貌夕。每當要進行作業(yè)調(diào)度時,系統(tǒng)計算每個作業(yè)的響應比民镜,選擇其中R最大者投入執(zhí)行啡专。
優(yōu)點:由于長作業(yè)也有機會投入運行,在同一時間內(nèi)處理的作業(yè)數(shù)顯然要少于SJF法制圈,從而采用HRRN方式時其吞吐量將小于采用SJF 法時的吞吐量们童。
缺點:由于每次調(diào)度前要計算響應比,系統(tǒng)開銷也要相應增加鲸鹦。
4. 時間片輪轉(zhuǎn)算法(RR慧库,Round-Robin)
該算法采用剝奪策略。每個進程被分配一個時間段馋嗜,稱作它的時間片齐板,即該進程允許運行的時間。
算法原理:讓就緒進程以FCFS 的方式按時間片輪流使用CPU 的調(diào)度方式嵌戈,即將系統(tǒng)中所有的就緒進程按照FCFS 原則覆积,排成一個隊列,每次調(diào)度時將CPU 分派給隊首進程熟呛,讓其執(zhí)行一個時間片宽档,時間片的長度從幾個ms 到幾百ms。在一個時間片結(jié)束時庵朝,發(fā)生時鐘中斷吗冤,調(diào)度程序據(jù)此暫停當前進程的執(zhí)行,將其送到就緒隊列的末尾九府,并通過上下文切換執(zhí)行當前的隊首進程椎瘟,進程可以未使用完一個時間片,就出讓CPU(如阻塞)侄旬。
優(yōu)點:時間片輪轉(zhuǎn)調(diào)度算法的特點是簡單易行肺蔚、平均響應時間短。
缺點:不利于處理緊急作業(yè)儡羔。在時間片輪轉(zhuǎn)算法中宣羊,時間片的大小對系統(tǒng)性能的影響很大璧诵,因此時間片的大小應選擇恰當怎樣確定時間片的大小:
時間片大小的確定
1.系統(tǒng)對響應時間的要求
2.就緒隊列中進程的數(shù)目
3.系統(tǒng)的處理能力
5.多級反饋隊列(Multilevel Feedback Queue)
多級反饋隊列調(diào)度算法是一種CPU處理機調(diào)度算法仇冯,UNIX操作系統(tǒng)采取的便是這種調(diào)度算法之宿。
調(diào)度算法描述:
1、進程在進入待調(diào)度的隊列等待時苛坚,首先進入優(yōu)先級最高的Q1等待比被。
2、首先調(diào)度優(yōu)先級高的隊列中的進程泼舱。若高優(yōu)先級中隊列中已沒有調(diào)度的進程等缀,則調(diào)度次優(yōu)先級隊列中的進程。例如:Q1,Q2,Q3三個隊列柠掂,只有在Q1中沒有進程等待時才去調(diào)度Q2项滑,同理,只有Q1,Q2都為空時才會去調(diào)度Q3涯贞。
3枪狂、對于同一個隊列中的各個進程,按照時間片輪轉(zhuǎn)法調(diào)度宋渔。比如Q1隊列的時間片為N州疾,那么Q1中的作業(yè)在經(jīng)歷了N個時間片后若還沒有完成,則進入Q2隊列等待皇拣,若Q2的時間片用完后作業(yè)還不能完成严蓖,一直進入下一級隊列,直至完成氧急。
4颗胡、在低優(yōu)先級的隊列中的進程在運行時,又有新到達的作業(yè)吩坝,那么在運行完這個時間片后毒姨,CPU馬上分配給新到達的作業(yè)(搶占式)。