在操作系統(tǒng)中調(diào)度的是指是一種自遠方分配,因而調(diào)度算法是指:根據(jù)系統(tǒng)的資源分配策略所規(guī)定的資源分配算法。對于不同的的系統(tǒng)和系統(tǒng)目標,通常采用不同的調(diào)度算法,例如,在批處理系統(tǒng)中,為了照顧為數(shù)眾多的段作業(yè),應采用短作業(yè)優(yōu)先的調(diào)度算法;又如在分時系統(tǒng)中,為了保證系統(tǒng)具有合理的響應時間,應當采用輪轉(zhuǎn)法進行調(diào)度。目前存在的多種調(diào)度算法中,有的算法適用于作業(yè)調(diào)度,有的算法適用于進程調(diào)度;但也有些調(diào)度算法既可以用于作業(yè)調(diào)度,也可以用于進程調(diào)度。
通常將作業(yè)或進程歸入各種就緒或阻塞隊列。有的算法適用于作業(yè)調(diào)度,有的算法適用于進程調(diào)度,有的兩者都適應。
1.先來先服務(FCFS)
先來先服務(FCFS, First Come First Serve)是最簡單的調(diào)度算法,按先后順序進行調(diào)度。
1. FCFS算法
按照作業(yè)提交或進程變?yōu)榫途w狀態(tài)的先后次序,分派CPU; 當前作業(yè)或進程占用CPU,直到執(zhí)行完或阻塞,才出讓CPU(非搶占方式)。 在作業(yè)或進程喚醒后(如I/O完成),并不立即恢復執(zhí)行,通常等到當前作業(yè)或進程出讓CPU。最簡單的算法。
2. FCFS的特點
比較有利于長作業(yè),而不利于短作業(yè)。 有利于CPU繁忙的作業(yè),而不利于I/O繁忙的作業(yè)。
2. 輪轉(zhuǎn)法(Round Robin)
輪轉(zhuǎn)法(Round Robin)是讓每個進程在就緒隊列中的等待時間與享受服務的時間成正比例。
1. 輪轉(zhuǎn)法
? 將系統(tǒng)中所有的就緒進程按照FCFS原則,排成一個隊列。
? 每次調(diào)度時將CPU分派給隊首進程,讓其執(zhí)行一個時間片。時間片的長度從幾個ms到幾百ms。
? 在一個時間片結(jié)束時,發(fā)生時鐘中斷。
? 調(diào)度程序據(jù)此暫停當前進程的執(zhí)行,將其送到就緒隊列的末尾,并通過上下文切換執(zhí)行當前的隊首進程。? 進程可以未使用完一個時間片,就出讓CPU(如阻塞)。
?
2. 時間片長度的確定
? 時間片長度變化的影響2 過長->退化為FCFS算法,進程在一個時間片內(nèi)都執(zhí)行完,響應時間長。2 過短->用戶的一次請求需要多個時間片才能處理完,上下文切換次數(shù)增加,響應時間長。
? 對響應時間的要求:T(響應時間)=N(進程數(shù)目)*q(時間片)
? 就緒進程的數(shù)目:數(shù)目越多,時間片越小
? 系統(tǒng)的處理能力:應當使用戶輸入通常在一個時間片內(nèi)能處理完,否則使響應時間,平均周轉(zhuǎn)時間和平均帶權(quán)周轉(zhuǎn)時間延長。
3. 多級反饋隊列算法(Round Robin with Multiple Feedback)
多級反饋隊列算法時間片輪轉(zhuǎn)算法和優(yōu)先級算法的綜合和發(fā)展。優(yōu)點:2 為提高系統(tǒng)吞吐量和縮短平均周轉(zhuǎn)時間而照顧短進程。2 為獲得較好的I/O設(shè)備利用率和縮短響應時間而照顧I/O型進程。2 不必估計進程的執(zhí)行時間,動態(tài)調(diào)節(jié)。
1. 多級反饋隊列算法2 設(shè)置多個就緒隊列,分別賦予不同的優(yōu)先級,如逐級降低,隊列1的優(yōu)先級最高。每個隊列執(zhí)行時間片的長度也不同,規(guī)定優(yōu)先級越低則時間片越長,如逐級加倍。2 新進程進入內(nèi)存后,先投入隊列1的末尾,按FCFS算法調(diào)度;若按隊列1一個時間片未能執(zhí)行完,則降低投入到隊列2的末尾,同樣按FCFS算法調(diào)度;如此下去,降低到最后的隊列,則按“時間片輪轉(zhuǎn)”算法調(diào)度直到完成。2 僅當較高優(yōu)先級的隊列為空,才調(diào)度較低優(yōu)先級的隊列中的進程執(zhí)行。如果進程執(zhí)行時有新進程進入較高優(yōu)先級的隊列,則搶先執(zhí)行新進程,并把被搶先的進程投入原隊列的末尾。2
2. 幾點說明2
I/O型進程:讓其進入最高優(yōu)先級隊列,以及時響應I/O交互。通常執(zhí)行一個小時間片,要求可處理完一次I/O請求的數(shù)據(jù),然后轉(zhuǎn)入到阻塞隊列。2 計算型進程:每次都執(zhí)行完時間片,進入更低級隊列。最終采用最大時間片來執(zhí)行,減少調(diào)度次數(shù)。2 I/O次數(shù)不多,而主要是CPU處理的進程。在I/O完成后,放回優(yōu)先I/O請求時離開的隊列,以免每次都回到最高優(yōu)先級隊列后再逐次下降。2 為適應一個進程在不同時間段的運行特點,I/O完成時,提高優(yōu)先級;時間片用完時,降低優(yōu)先級。