【操作系统】几种常用调度算法
文章目錄
- 一、先來先服務調度算法(FCFS)
- 二、短作業優先調度算法(SJF)
- 最短作業優先調度算法(SJF)
- 最短剩余時間優先調度算法(SRTF)
- 三、響應比最高者優先調度算法(HRRF)
- 四、時間片輪轉調度算法(RR)
- 五、優先級調度算法(PSA)
- 六、多級反饋隊列調度算法 (MLFQ)
相關時間計算
周轉時間 = 作業完成時刻 - 作業到達時刻
等待時間 = 周轉時間 - 運行時間
帶權周轉時間 = 周轉時間 / 服務時間
平均周轉時間 = 作業周轉時間之和 / 作業個數
平均帶權周轉時間 = 帶權周轉時間之和 / 作業個數
服務時間:作業的運行時間
調度&分配
1、調度:
調度實現進程/線程選擇算法,選中者獲得處理器。
2、分配:
分派實現處理器的分配和綁定工作,將處理器分配給被選中的進程或線程,處理進程或線程上下文交換細節。
剝奪式(搶占式)& 非剝奪式(非搶占式)
1、剝奪式(搶占式)優先級調度算法。當一個進程正在處理機上運行時,若有某個更為重要或緊迫的進程進入就緒隊列,則立即暫停正在運行的進程,將處理機分配給更重要或緊迫的進程。
2、非剝奪式(非搶占式)優先級調度算法。當一個進程正在處理上運行時,即使有某個更為重要或緊迫的進程進入就緒隊列,仍然讓正在進行的進程繼續運行,直到由于其自身原因而主動讓出處理機(任務完成或等待事件),才把處理機分配給更為重要或緊迫的進程。
一、先來先服務調度算法(FCFS)
First Come First Service
- 算法思想:主要從“公平”的角度考慮,先到先服務。
- 算法規則:先進入系統的作業/進程優先被挑選。
- 用于作業 / 進程調度:
用于作業調度時,考慮的是哪個作業先到達后備隊列;
用于進程調度時,考慮的是哪個進程先到達就緒隊列。 - 是否可搶占:非搶占式
- 優點:公平、算法實現簡單。
- 缺點:對長作業有利,對短作業不利。
排在長作業(進程)后面的短作業需要等待很長時間,帶權周轉時間很大,對短作業來說用戶體驗不好。 - 是否導致饑餓:不會
二、短作業優先調度算法(SJF)
Short Job First
- 算法思想:追求最少的平均等待時間、最少的平均周轉時間、最少的平均帶權周轉時間。
- 算法規則:最短的作業/進程優先得到服務(所謂“最短”,是指要求服務時間最短)。
- 用于作業 / 進程調度:
用于作業調度時,稱為“短作業優先算法”Short Job First(SJF);
用于進程調度時,稱為“短進程優先算法”Short Process First(SPF)。 - 是否可搶占:
最短作業優先算法(SJF)和短進程優先算法(SPF)是非搶占式;
最短剩余時間優先算法(SRTF)是搶占式。 - 優點:“最短的”平均時間、平均周轉時間。
- 缺點:不公平。對短作業有利,對長作業不利。
作業/進程的運行時間是由用戶提供,并不一定真實,不一定能做到真正的短作業優先。 - 是否導致饑餓:會
如果源源不斷地有短作業/進程到來,可能使長作業/進程長時間得不到服務,產生“饑餓”現象。如果一直得不到服務,則稱為“餓死”。
最短作業優先調度算法(SJF)
Shortest Job First
- 算法規則:每次調度時選擇當前已到達且運行時間最短的作業/進程。
- 是否可搶占:非搶占式
- 優點:對比先來先服務算法,最短作業優先算法的平均等待時間、平均周轉時間、平均帶權周轉時間都更低。
最短剩余時間優先調度算法(SRTF)
Shortest Remaining Time First
- 算法規則:每當有進程加入就緒隊列改變時就需要調度,如果新到達的進程剩余時間比當前運行的進程剩余時間更短,則由新進程搶占處理機,當前運行進程重新回到就緒隊列。另外,當一個進程完成時也需要調度。
- 是否可搶占:搶占式
- 優點:對比非搶占式的短作業優先算法,搶占式的短作業優先算法的平均等待時間、平均周轉時間、平均帶權周轉時間都更低。
三、響應比最高者優先調度算法(HRRF)
Highest Response Ratio First
- 算法思想:選擇等待時間和要求服務時間都較短的作業/進程優先調度。
- 算法規則:在每次調度時先計算各個作業/進程的響應比,選擇響應比最高的作業/進程為其服務。
響應比
= 響應時間/要求服務時間
= (等待時間+要求服務時間)/ 要求服務時間
= 1 + 等待時間/作業處理時間
(作業要求服務時間由用戶給出,是一個常量 )
- 用于作業 / 進程調度:可用于作業調度,也可用于進程調度。
- 是否可搶占:非搶占式
因此只有當前運行的作業/進程主動放棄處理機時,才需要調度,才需要計算響應比。 - 優點:上述兩種算法的權衡折中。既照顧了短作業,又考慮了作業到達的先后次序,又不會使長作業長期得不到服務。
等待時間相同時,要求服務時間短的優先(SJF的優先,對短作業有利)
要求服務時間相同時,等待時間長的優先(FCFS的優點)
隨著等待時間越來越長,其響應比也會越來越大,從而避免了長作業饑餓的問題(長作業有利) - 缺點:要進行響應比計算,增加了系統開銷。
- 是否導致饑餓:不會
總結:這三種算法只根據公平、平均等待時間、平均周轉時間、平均帶權周轉時間等來評價系統的整體性能指標,但不關心需要時間和任務的緊急程度,對于用戶來說,交互性很差。因此這三種算法只適用于早期的批處理系統。
四、時間片輪轉調度算法(RR)
Round-Robin
-
算法思想:公平地、輪流地為各個進程服務,讓每個進程在一定時間間隔內都可以得到響應。
調度程序每次把CPU分配給就緒隊列首進程/線程使用一個時間間隔(稱為時間片),就緒隊列中的每個進程/線程輪流運行一個時間片。 -
算法規則:按照各進程到達就緒隊列的順序,輪流讓各個進程執行一個時間片(每次選擇的都是排在就緒隊列隊頭的進程)。若進程未在一個時間片內執行完,則剝奪處理機,將進程重新放到就緒隊列隊尾重新排隊。
時間片的選取:時間片大小的確定要從進程個數、切換開銷、系統效率和響應時間等方面考慮。
常用輪轉法:
① 最常用的輪轉法是等時間片輪轉法,每個進程輪流運行相同時間片。
② 改進的輪轉法對于不同的進程分配不同的時間片,時間片的長短可以動態修改。
- 用于作業 / 進程調度:用于進程調度(只有作業放入內存建立了相應的進程后,才能被分配處理機時間片)
- 是否可搶占:搶占式
若進程未能在時間片內運行完,將被強行剝奪處理機使用權。
當一個進程開始運行時,將時間片的值置入間隔時鐘內,當發生間隔時鐘中斷時,中斷處理程序就通知處理器調度程序切換處理器。 - 優點:公平,響應快,適用于分時操作系統。
- 缺點:由于高頻率的進程切換,因此有一定開銷;不區分任務的緊急性。
- 是否導致饑餓:不會
時間片太大或太小
① 如果時間片太大,使得每個進程都可以在一個時間片內就完成,則時間片輪轉調度算法退化為先來先服務調度算法,并且會增大進程的響應時間。
② 如果時間片太小,進程調度、切換是有時間代價的,會導致進程切換過于頻繁,系統會花大量的時間來處理進程切換,從而導致實際用于進程執行的時間比例減小。
五、優先級調度算法(PSA)
Priority Scheduling Algorithm
- 算法思想:根據任務的緊急程度來決定處理順序。
- 算法規則:根據確定的優先級選取進程/線程,每次總是選擇就緒隊列中優先級最高者運行。
用戶進程/線程優先級的規定者有兩種:
① 用戶:用戶自己提出優先級,稱為外部指定法。優先級越高,費用越高。
② 系統:由系統綜合考慮有關因素來確定用戶進程/線程的優先級,稱為內部指定法。
進程/線程優先級的確定方式:
根據優先級是否隨時間而變,進程/線程優先級的確定有靜態和動態兩種方式:
① 靜態優先級:在進程/線程創建時確定,此后不再改變。優先級主要由進程類型、資源需求、時間需求和用戶需求決定。
優點:比較簡單,開銷小。
缺點:不夠公平不太靈活,可能出現優先級低的作業/進程長時間得不到調度的情況。
② 動態優先級:隨時間而變,基本原則是:
a. 正在運行的進程/線程隨著占有CPU時間的增加優先級逐漸降低;
b. 就緒隊列中等待CPU的進程/線程隨著等待時間增加優先級逐漸提高。
優點:公平性好,靈活,資源利用率高。
缺點:需要花費比較多的執行程序時間,因而花費的系統開銷比較大。
- 用于作業 / 進程調度:既可以用于作業調度,也可以用于進程調度。
- 是否可搶占:搶占式,非搶占式都有。
區別在于:非搶占式只需在進程主動放棄處理機時進行調度即可,而搶占式還需在就緒隊列變化時,檢查是否發生搶占。 - 優點:用優先級區分緊急程度、重要程度,適用于實時操作系統。可靈活地調整對各種作業/進程的偏好程度。
- 缺點:若源源不斷地有高優先級進程到來,則可能導致饑餓。
- 是否導致饑餓:會
若源源不斷地有高優先級進程到來,則可能導致饑餓。
六、多級反饋隊列調度算法 (MLFQ)
Multi-Level Feedback Queue
- 算法思想:對其他調度算法的折中權衡。
- 算法規則:
1、建立多級就緒進程隊列,各級隊列優先級從高到低,時間片從小到大。每個隊列賦予不同優先級,較高優先級隊列一般分配給較短的時間片。
2、新進程到達時先進入第1級隊列,按先來先服務原則排隊等待被分配時間片,若用完時間片進程還未結束,則進程進入下一級隊列隊尾;若此時已經在最下級的隊列,則重新放回該隊列隊尾。
3、處理器調度每次先從高優先級就緒隊列中選取可占有處理器的進程,只有在選不到時,才從較低優先級就緒隊列中選取進程。即只有第k級隊列為空時,才會為k+1級隊頭的進程分配時間片。
- 用于作業 / 進程調度:用于進程調度
- 是否可搶占:搶占式
在k級隊列的進程運行過程中,若更上級的隊列(1~k-1級)中進入了一個新進程,則由于新進程處于優先級更高的隊列中,因此新進程會搶占處理機,原來運行的進程放回k級隊列隊尾。 - 優點:對其他調度算法的折中權衡。
對各類進程相對公平(FCFS的優點);
短進程只用較少的世界就可完成(SPF的優點);
每個新到達的進程都可以很快得到響應(RR的優點);
不必實現估計進程的運行時間(避免用戶作假);
可靈活地調整對各類進程的偏好程度,比如:CPU密集型進程、I/O密集型進程(拓展:可以將因I/O而阻塞的進程重新放回原隊列,這樣I/O型進程就可以保持較高優先級)。 - 缺點:可能會導致饑餓
- 是否導致饑餓:會
總結:比起早期的批處理操作系統來說,由于計算機造價大幅降低,因此之后出現的交互式操作系統(包括分時操作系統和實時操作系統)更注重系統的響應時間、公平性、平衡性等指標。而這幾種算法恰好也能較好地滿足交互式系統的需求。因此這三種算法適用于交互式系統。
ending~~~
有什么問題歡迎留言噢
總結
以上是生活随笔為你收集整理的【操作系统】几种常用调度算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: wordpress修改后台站点地址后无法
- 下一篇: Windows 编程基础(四)