操作系統_調度算法

目錄

說明

1,先來先服務調度算法(First-Come First-Served,FCFS)

概述

本質

特點

2,短作業/短進程優先算法(Short Job/Process First,SJF/SPF)

概述

本質

特點

3,高優先權優先調度算法(FPF或Priority-Scheduling Algorithm,PSA)

概述

說明

優先權:算法的核心

進程的優先權

優先權的確定

4,高響應比優先調度算法(Highest Response Ratio Next,HRRN)

概述

說明

特點

5,基於時間片的輪轉(Round Robin,RR)調度算法

概述

時間片選擇

時間片大小選擇

6,多隊列調度算法

7,多級反饋隊列調度算法

概述

算法概述

特點


說明

實質是一種資源分配方法,因而調度算法是指:根據系統的資源分配策略所規定的資源分配算法

對於不同的系統和系統目標,通常採用不同的調度算法,例如,在批處理系統中,爲了照顧爲數衆多的短作業,應採用短作業優先的調度算法.又如在分時系統中,爲了保證系統具有合理的響應時間,應採用輪轉法進行調度。

目前存在的多種調度算法中,有的算法適用於作業調度,有的算法適用於進程調度;但也有些調度算法既可用於作業調度,也可用於進程調度。

調度算法很少有絕對的好壞!

 

1,先來先服務調度算法(First-Come First-Served,FCFS)

概述

  • 既可用於作業調度,也可用於進程調度。
  • 用於作業調度:每次調度都是從後備作業隊列中,選擇一個或多個最先進入該隊列的作業,將它們調入內存,爲它們分配資源、創建進程,然後放入就緒隊列。
  • 用於進程調度:則每次調度是從就緒隊列中,選擇一個最先進入隊列的進程,爲之分配處理機,使之投入運行。

本質

僅考慮“到達時間”;

特點

  • 實現簡單;
  • 貌似公平;
  • 實際上,對短作業不公平。

 

2,短作業/短進程優先算法(Short Job/Process First,SJF/SPF)

概述

  • 既可用於作業調度(SJF),也可用於進程調度(SPF)
  • 用於作業調度:每次調度都是從後備作業隊列中,選擇一個要求服務時間(執行時間)最短的作業,將它們調入內存,爲它們分配資源、創建進程,然後放入就緒隊列。
  • 用於進程調度:則每次調度是從就緒隊列中,選擇一個執行時間最短的進程,爲之分配處理機,使之投入運行;
  • 實際應用表明,SJF的性能要優於FCFS調度算法的;

本質

僅考慮“執行時間”;

特點

  • 實現困難:估算執行時間很難;
  • 有利於短作業
  • 對長作業不公平。

 

3,高優先權優先調度算法(FPF或Priority-Scheduling Algorithm,PSA)

概述

  • 既可用於作業調度,也可用於進程調度。
  • 用於作業調度時:系統將從後備隊列中選擇若干個優先權最高的作業,裝入內存。
  • 用於進程調度時:該算法是把處理機分配給就緒隊列中優先權最高的進程。分爲非搶佔式優先權算法和搶佔式優先權調度算法。

說明

  • 對於FCFS算法,作業的等待時間就是作業的優先級,等待時間越長,其優先級越高。
  • 對於SJF算法,作業的長短就是作業的優先級,作業所需運行的時間越短,其優先級越高。
  • 但上述兩種優先級都不能反映作業的緊迫程度
  • 而在優先級調度算法中,則是基於作業的緊迫程度,由外部賦予作業相應的優先級,調度算法是根據該優先級進行調度的。這樣就可以保證緊迫性作業優先運行。

優先權:算法的核心

  • 反映作業/進程執行時的迫切程度,是對調度所考慮的實際因素的算法抽象。
  • 通常用1個整型數來表示。

進程的優先權

搶佔式優先權(進程調度):高優先權進程到達時,立刻停止低優先權進程的執行,讓高優先權進程執行。
非搶佔式優先權(進程調度):高優先權作業進程到達時,須等待低優先權進程執行完畢或主動釋放CPU。

優先權的確定

靜態優先權:進程創建時確定(根據進程類型、資源需求和用戶要求等),直到進程執行結束,保持不變。
動態優先權:進程創建時確定(根據進程類型、資源需求和用戶要求等)初始優先權,在進程執行過程中,可以發生變化。

 

4,高響應比優先調度算法(Highest Response Ratio Next,HRRN)

概述

  • 用於作業調度。
  • 系統將從後備隊列中選擇若干個響應比(優先權)最高的作業,裝入內存,投入運行。
  • 核心:對等待作業以一定速率a提高其優先權。

說明

由於等待時間服務時間之和就是系統對該作業的響應時間,故該優先級又相當於響應比Rp。據此,優先又可表示爲:

特點

  • 如果作業的等待時間相同,則要求服務的時間愈短,其優先權愈高,因而該算法有利於短作業
  • 當要求服務的時間相同時,作業的優先權決定於其等待時間,等待時間愈長,其優先權愈高,因而它實現的是先來先服務
  • 對於長作業,作業的優先級可以隨等待時間的增加而提高,當其等待時間足夠長時,其優先級便可升到很高,從而獲得處理機。
  • 既照顧了短作業,又考慮了作業到達的先後次序,不會使長作業長期得不到服務。因此,該算法實現了一種較好的折衷。
  • 須做響應比計算,會增加系統開銷

 

5,基於時間片的輪轉(Round Robin,RR)調度算法

概述

  • 用於作業調度或進程調度。
  • 在早期的時間片輪轉法中,系統將所有的就緒進程按先來先服務的原則,排成一個隊列,每次調度時,把CPU分配給隊首進程,並令其執行一個時間片。
  • 當執行的時間片用完時,由一個計時器發出時鐘中斷請求,調度程序便據此信號來停止該進程的執行,並將它送往就緒隊列的末尾
  • 然後,再把處理機分配給就緒隊列中新的隊首進程,同時也讓它執行一個時間片。
  • 保證響應時間:就緒隊列中的所有進程,在給定時間內,均能獲得一個時間片的處理機執行時間。換言之,系統能在給定的時間內,響應所有用戶的請求。
  • 時間片的大小從幾毫秒 到幾百毫秒。

時間片選擇

  • 固定時間片。
  • 可變時間片。

時間片大小選擇

  • 不可太大:影響最大響應時間(等待時間+要求服務時間):T=nq;其中,n爲進程數量,q爲時間片大小。
  • 不可太小:調度開銷,增加週轉時間;

 

6,多隊列調度算法

  • 將系統中的進程就緒隊列從一一個拆分爲若干個;
  • 將不同類型或性質的進程固定分配在不同的就緒隊列,不同的就緒隊列採用不同的調度算法;
  • 一個就緒隊列中的進程可以設置不同的優先級,不同的就緒隊列本身也可以設置不同的優先級。

 

7,多級反饋隊列調度算法

概述

  • 設置多個就緒隊列,爲各隊列賦予不同的優先級。第1個隊列的優先級最高,其餘隊列優先權逐個降低。
  • 賦予各個隊列中進程執行時間片的大小各不相同:優先權愈高的隊列中,爲每個進程所規定的執行時間片就愈小。
  • 僅當第1隊列空閒時,調度程序才調度第2隊列中的進程運行;僅當第1~(i-1)隊列均空時,纔會調度第i隊列中的進程運行。
  • 如果處理機正在第i隊列中爲某進程服務時,又有新進程進入優先權較高的隊列(第1~(i-1)中的任何一個隊列),則此時新進程將搶佔正在運行進程的處理機(正在運行進程被放回原所在隊列末尾)。

算法概述

  1. 對新創建進程,首先將它放入第1隊列末尾,按FCFS原則排隊等待調度。
  2. 當輪到該進程執行時,如它能在該時間片內完成,則結束; 如果未完成,調度程序便將該進程轉入第2隊列的末尾,再同樣按FCFS原則等待調度執行;
  3. 如果它在第2隊列中運行1個時間片後仍未完成,再依次將它放入第3隊列…。如此下去,當1個長作業(進程)從第1隊列依次降到第n隊列後,在第n隊列中便採取按時間片輪轉的方式運行。

特點

  1. 避免了事先計算各種進程所需的執行時間
  2. 具有較好的性能,能較好地滿足各種類型用戶需要:
  • 終端型作業用戶:終端型作業大多屬於交互型作業,作業通常較小,系統只要能使這些作業(進程)在第一隊列所規定的時間片內完成,便可使終端型作業用戶都感到滿意。
  • 短批處理作業用戶:對於很短的批處理型作業,開始時像終端型作業一樣,如果僅在第一隊列中執行一個時間片即可完成,便可獲得與終端型作業一樣的響應時間。對於稍長的作業,通常也只需在第二隊列和第三隊列各執行一個時間片即可完成,其週轉時間仍然較短。
  • 長批處理作業用戶: 對於長作業,它將依次在第1, 2, …,n個隊列中運行,然後再按輪轉方式運行,用戶不必擔心其作業長期得不到處理。

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章