目錄
- 先進先出(First In First Out)
- 最短作業優先(Shortest Job First)
- 最短完成時間優先(Shortest Time-to-Completion First)
- 輪轉(Round-Robin)
這章介紹了一些基本的調度策略,從周轉時間和回應時間兩個指標分別討論這些策略的優劣,
在進入正文之前首先了解周轉時間、回應時間如何計算,
\[T_{周轉時間}=T_{完成時間}-T_{到達時間} \\ T_{回應時間}=T_{首次運行}-T_{到達時間} \]周轉時間代表作業從到達和完成之間所花費時間,回應時間代表作業從到達和開始處理作業之間的時間花費,
介紹之前做出如下假設:
- 每個作業運行相同的時間
- 所有作業同時到達
- 一旦開始,每個作業都必須執行完成
- 所有作業都使用CPU,即沒有IO操作
- 每個作業運行時間都是已知的,
先進先出(First In First Out)
假設:2 3 4 5
首先第一個基本調度策略是先進先出,它是按照作業壓入順序處理作業,早壓入的作業總是比之后的作業先執行,但這種模式很依賴作業的壓入順序,作業處理的順序不同會導致周轉時間產生較大差異,例如:假設有兩個同時到達的作業A、B,A的處理的所需時間遠比B久,可以得出較短處理時間的作業B先處理遠比先處理A的周轉時間短,
最短作業優先(Shortest Job First)
假設:3 4 5
對于FIFO的按作業壓入順序處理作業,SJF在多個作業達到時總是會選擇處理時間最短的作業處理,直到所有作業處理完畢,SJF能夠解決了FIFO在作業選取上的不足,同FIFO,SJF也存在不足,假設長作業總比短作業先到達,那么SJF出現與FIFO類似的護航問題(參考書本p50),
最短完成時間優先(Shortest Time-to-Completion First)
假設:4 5
為SJF添加搶占機制,稱為STCF,與SJF不同的是STCF允許作業在沒有執行完成可以切換到其他作業執行,每當一個作業到達時,總是檢查剩余作業和新作業中誰的剩余作業處理時間最少,然后調度該作業,被搶占作業必須等待搶占作業處理完成之后才能被重新調度,
輪轉(Round-Robin)
假設:4 5
上面介紹的三種調度只是針對周轉時間進行處理,對于回應時間它們都存在著問題,輪轉是一個很簡單的思想:在統一時間片內運行一個作業,然后切換到運行佇列中的下一個作業繼續作業,簡單一點就是作業都在交替執行一段時間,作業經過交替執行后回應時間遠比前三種模式短,但是輪轉的周轉時間又因為輪轉變得非常糟糕,
上述的幾個調度模式非常側重某一個維度,SJF、STCF側重周轉時間,RR側重回應時間,所以需要一個對周轉時間和回應時間都相對友好的調度模式,同時還需要放寬4、5條件,這些會在多級反饋佇列得到解決,
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/162305.html
標籤:Linux
上一篇:批量埠被ban
