猥瑣君____
回答數:203 | 被采納數:136
2017-03-15 14:53:24
調度算法
通常將作業或進程歸入各種就緒或阻塞隊列。有的算法適用於作業調度,有的算法適用於進程調度,有的兩者都適應。
1.先來先服務(FCFS,FirstComeFirstServe)
先來先服務(FCFS,FirstComeFirstServe)是最簡單的調度算法,按先後順序進行調度。
1.FCFS算法
按照作業提交或進程變為就緒狀態的先後次序,分派CPU;
當前作業或進程占用CPU,直到執行完或阻塞,才出讓CPU(非搶占方式)。
在作業或進程喚醒後(如I/O完成),並不立即恢複執行,通常等到當前作業或進程出讓CPU。最簡單的算法。
2.FCFS的特點
比較有利於長作業,而不利於短作業。
有利於CPU繁忙的作業,而不利於I/O繁忙的作業。
2.輪轉法(RoundRobin)
輪轉法(RoundRobin)是讓每個進程在就緒隊列中的等待時間與享受服務的時間成正比例。
1.輪轉法
Ø將係統中所有的就緒進程按照FCFS原則,排成一個隊列。
Ø每次調度時將CPU分派給隊首進程,讓其執行一個時間片。時間片的長度從幾個ms到幾百ms。
Ø在一個時間片結束時,發生時鍾中斷。
Ø調度程序據此暫停當前進程的執行,將其送到就緒隊列的末尾,並通過上下文切換執行當前的隊首進程。
Ø進程可以未使用完一個時間片,就出讓CPU(如阻塞)。
Ø
2.時間片長度的確定
Ø時間片長度變化的影響
²過長->退化為FCFS算法,進程在一個時間片內都執行完,響應時間長。
²過短->用戶的一次請求需要多個時間片才能處理完,上下文切換次數增加,響應時間長。
Ø對響應時間的要求:T(響應時間)=N(進程數目)*q(時間片)
Ø就緒進程的數目:數目越多,時間片越小
Ø係統的處理能力:應當使用戶輸入通常在一個時間片內能處理完,否則使響應時間,平均周轉時間和平均帶權周轉時間延長。
3.多級反饋隊列算法(RoundRobinwithMultipleFeedback)
多級反饋隊列算法時間片輪轉算法和優先級算法的綜合和發展。
優點:
²為提高係統吞吐量和縮短平均周轉時間而照顧短進程。
²為獲得較好的I/O設備利用率和縮短響應時間而照顧I/O型進程。
²不必估計進程的執行時間,動態調節。
1.多級反饋隊列算法
²設置多個就緒隊列,分別賦予不同的優先級,如逐級降低,隊列1的優先級最高。每個隊列執行時間片的長度也不同,規定優先級越低則時間片越長,如逐級加倍。
²新進程進入內存後,先投入隊列1的末尾,按FCFS算法調度;若按隊列1一個時間片未能執行完,則降低投入到隊列2的末尾,同樣按FCFS算法調度;如此下去,降低到最後的隊列,則按“時間片輪轉”算法調度直到完成。
²僅當較高優先級的隊列為空,才調度較低優先級的隊列中的進程執行。如果進程執行時有新進程進入較高優先級的隊列,則搶先執行新進程,並把被搶先的進程投入原隊列的末尾。
²
2.幾點說明
²I/O型進程:讓其進入最高優先級隊列,以及時響應I/O交互。通常執行一個小時間片,要求可處理完一次I/O請求的數據,然後轉入到阻塞隊列。
²計算型進程:每次都執行完時間片,進入更低級隊列。最終采用最大時間片來執行,減少調度次數。
²I/O次數不多,而主要是CPU處理的進程。在I/O完成後,放回優先I/O請求時離開的隊列,以免每次都回到最高優先級隊列後再逐次下降。
²為適應一個進程在不同時間段的運行特點,I/O完成時,提高優先級;時間片用完時,降低優先級。