操作系統-3-調度算法

操作系統

一、線程調度(以什麼規則處理任務)

當有一堆任務要處理,但是由於資源有限,這些事情無法同時處理,這就需要確定某種規則來決定處理這些任務的順序,這就是“調度”研究的問題。

在多道程序系統中,進程的數量往往是多於處理機的個數的,這樣不可能同時並行的處理各個進程。

處理機調度就是從就緒隊列中按照一定的算法選擇一個進程並將處理機分配給它進行,以實現進程的併發執行。

一般說來,作業從進人系統到最後完成,可能要經歷三級調度:高級調度、中級調度和低級調度。

高級調度(作業調度)

高級調度:又稱作業調度。其主要功能是根據一定的算法,從輸人的一批作業中選出若干個作業,分配必要的資源,如內存、外設等,爲它建立相應的用戶作業進程和爲其服務的系統進程(如輸人、輸出進程),最後把它們的程序和數據調人內存,等待進程調度程序對其執行調度,並在作業完成後作善後處理工作。

由於內存有限,有時候無法將用戶提交的作業全部放入內存,因此就需要確定某種規則來決定將作業調入內存的順序。

高級調度(作業調度): 按照一定的原則從外存上處於後備隊列的作業中挑選一個(或多個)作業,給他們分配內存等資源,並建立相應的進程(建立PCB),以使它們獲得競爭處理機的權利。

高級調度是輔存(外存)與內存之間的調度,每個作業只調入一次,調出一次,作業調入的時候會建立相應的PCB,作業調出的時候撤銷PCB,高級調度主要是調入的問題,因爲只有調入的時機需要操縱系統來確定,但是調出的時機必然是作業運行結束才調出

中級調度(內存調度)

爲了使內存中同時存放的進程數目不至於太多,有時就需要把某些進程從內存中移到外存上,以減少多道程序的數目,爲此設立了中級調度。特別在採用虛擬存儲技術的系統或分時系統中,往往增加中級調度這一級。所以中級調度的功能是在內存使用情況緊張時,將一些暫時不能運行的講程從內存對換到外存上等待。當以後內存有足夠的空閒空間時,再將合適的進程重新換人內存,等待進程調度。引人中級調度的主要目的是爲了提高內存的利用率和系統吞吐量。它實際上就是存儲器管理中的對換功能。

引入虛擬存儲技術之後,可將暫時不能運行的進程調至外存等待,等它重新具備了運行條件且內存又稍有空閒的時候,再重新調入內存

這麼做的目的是爲了提高內存利用率和系統吞吐量。

暫時調到外存等待的進程狀態爲掛起狀態。需要注意的是,PCB不會一起調到外存,而是會常駐內存。

中級調度(內存調度),就是決定將哪個處於掛起狀態的進程重新調入內存。

低級調度(進程調度)

低級調度(進程調度):主要任務就是按照某種方法和策略從就緒隊列中選擇一個進程,將處理機分配給它。

進程調度是操作系統中最基本的一個調度,在一般的操作系統中都必須配置進程調度。

在這裏插入圖片描述

總結

在這裏插入圖片描述

二、進程調度的時機、切換與過程、方式

在這裏插入圖片描述

1、進程調度的時機

進程調度(低級調度):按照某種算法從就緒隊列中選擇一個進程爲其分配處理機。

需要進行進程調度與切換的情況:

  • 當前運行的進程主動放棄處理機
    1、進程正常終止
    2、運行過程中發生異常而終止
    3、進程主動請求阻塞(如等待IO)
  • 當前運行的進程被動放棄處理機
    1、分給進程的時間片用完了
    2、有更緊急的事需要處理(如IO中斷)
    3、有更高優先級的進程進入就緒隊列

不能進行進程調度和切換的情況:

  • 1、在處理中斷的過程中,中斷處理過程複雜,與硬件密切相關,很難做到在中斷處理過程中進行進程切換。
  • 2、進程在操作系統內核程序臨界區
  • 3、在原子操作過程中。

2、進程調度的方式(非搶佔式和搶佔式)

  • 非搶佔式:只允許進程主動放棄處理機,即使有更緊急的任務到達,當前進程仍然會繼續使用處理機。
  • 搶佔式:當一個進程在處理機上執行的時候,如果有更重要或者更緊迫的進程需要使用處理機,則立即暫停正在執行的進程,將處理機分配給更緊迫的那個進程。

進程切換的過程主要完成了:

  • 1、對原來運行進程各種數據的保存
  • 2、對新的進程各種數據的恢復

進程切換是有代價的,如果過於頻繁,會使系統的效率降低。

三、調度算法的評價指標

在這裏插入圖片描述

1、CPU利用率

利用率=忙碌時間/總時間

2、系統吞吐量(單位時間內完成的作業的數量)

系統吞吐量:單位時間內完成的作業的數量。
系統吞吐量=總共完成了多少道作業/總共花了多少時間

3、週轉時間(作業完成時間-作業提交時間)

從作業被提交系統開始到作業完成爲止的這段時間間隔。
週轉時間=作業完成時間-作業提交時間

4、等待時間

處於等待處理機狀態的時間之和。

5、響應時間

從用戶提交請求到首次產生響應所用的時間。

四、調度算法

1、先來先服務(FCFS)

等待時間越長的進程越優先得到服務。
各種調度算法的學習思路:

  • 1、算法思想
  • 2、算法規則
  • 3、這種調度算法是用於作業調度還是進程調度。
  • 4、搶佔式、非搶佔式
  • 5、優點和缺點
  • 6、是否會導致飢餓

在這裏插入圖片描述

在這裏插入圖片描述

2、短作業優先(SJF,Shortest Job First)

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

能不能設計一個算法,既考慮各個作業等待時間,又考慮運行時間?就提出了高響應比優先算法

4、高響應比優先(HRRN,Highest Response Ratio Next,每次調度時計算響應比,響應比=(等待時間+要求服務時間)/要求服務時間)

在這裏插入圖片描述

在這裏插入圖片描述

總結

在這裏插入圖片描述

五、調度算法二

在這裏插入圖片描述

1、時間片輪轉調度算法(RR,Round-Robin,搶佔式)

公平輪流的爲各個進程服務,讓每個進程在一定時間間隔內都可以得到響應。

默認新到達的進程先進入就緒隊列,剛下處理機的進程跟在後面。

時間片爲2的情況:
在這裏插入圖片描述
時間片爲5的情況:
在這裏插入圖片描述

如果時間片太大,使得每個進程都可以在一個時間片內就完成,則時間片輪轉調度算法就退化成先來先服務調度算法。並且會增大響應時間,因此時間片不能太大。

在這裏插入圖片描述

2、優先級調度算法

非搶佔:
在這裏插入圖片描述

搶佔:
在這裏插入圖片描述
根據優先級是否可以動態改變,可以將優先級分爲:靜態優先級和動態優先級兩種。

在這裏插入圖片描述

3、多級反饋隊列調度算法(搶佔式,若時間片用完進程沒結束,會進入下一級隊列隊尾)

在這裏插入圖片描述

設置多級就緒隊列(多個隊列的優先級不同,分給各個隊列的時間片也不同),各級隊列優先級從高到低,時間片從小到大。

在這裏插入圖片描述
若時間片用完進程沒結束,會進入下一級隊列隊尾。

在這裏插入圖片描述

總結

在這裏插入圖片描述

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