FCFS,SJF,HRRN調度算法

三種基本的調度算法

在這裏插入圖片描述
Tips:各類調度算法的學習思路
1.算法思想
2.算法規則
3.這種調度算法是用於做業調度仍是進程調度?
4.搶佔式?非搶佔式?
5.優勢和缺點.
6.是否會致使飢餓:某進程/做業長期得不到服務算法

先來先服務(FCFS, First Come First Serve )

例題:各進程到達就緒隊列的時間、須要的運行時間以下表所示。使用先來先服務調度算法,計算各
進程的等待時間、平均等待時間、週轉時間、平均週轉時間、帶權週轉時間、平均帶權週轉時間。
在這裏插入圖片描述
先來先服務調度算法:按照到達的前後順序調度,事實上就是等待時間越久的越優先獲得服務。性能

所以,調度順序爲: P1→P2→P3→P4學習

在這裏插入圖片描述
如上圖所示
在這裏插入圖片描述
週轉時間:
在這裏插入圖片描述
帶權週轉時間:
在這裏插入圖片描述
等待時間:設計

平均週轉時間= (7+9+8+11)/4= 8.75
平均帶權週轉時間= (1+2.25+8+2.75)/4=3.5
平均等待時間= (0+5+7+7)/4 =4.753d

注意:本例中的進程都是純計算型的進程,一個進程到達後要麼在等待,要麼在運行。若是是又有計算。
I/O操做的進程,其等待時間就是週轉時間-運行時間- I/0操做的時間blog

先來先服務算法總結:
在這裏插入圖片描述隊列

短做業優先(SJF, Shortest Job First )

在這裏插入圖片描述
例題:各進程到達就緒隊列的時間、須要的運行時間以下表所示。使用非搶佔式的短做業優先調度算法,計算各進程的等待時間、平均等待時間、週轉時間、平均週轉時間、帶權週轉時間、平均帶權周
轉時間。進程

在這裏插入圖片描述

短做業/進程優先調度算法:每次調度時選擇當前已到達且運行時間最短的做業/進程。所以,調度順序爲: P1→P3→P2→P4.圖片

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

對比FCFS算法的結果,顯然SPF算法的平均等待/週轉/帶權週轉時間都要更低ip

搶佔式的短做業優先算法又稱「最短剩餘時間優先算法(SRTN)

例題:各進程到達就緒隊列的時間、須要的運行時間以下表所示。使用搶佔式的短做業優先調度算法,計算各進程的等待時間、平均等待時間、週轉時間、平均週轉時間、帶權週轉時間、平均帶權週轉時間,

在這裏插入圖片描述

最短剩餘時間優先算法:每當有進程加入就緒隊列改變時就須要調度,若是新到達的進程剩餘時間比當前運行的進程剩餘時間更短,則由新進程搶佔處理機,當前運行進程從新回到就緒隊列。另外,當一個進程完成時也須要調度.

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

在這裏插入圖片描述

對比非搶佔式的短做業優先算法,顯然搶佔式的這幾個指標又要更低

注意幾個小細節:

1.若是題目中未特別說明,所提到的「短做業/進程優先算法」默認是非搶佔式的

2.不少書上都會說「SJF調度算法的平均等待時間、平均週轉時間最少」
嚴格來講,這個表述是錯誤的,不嚴謹的。以前的例子代表,最短剩餘時間優先算法獲得的平均等待時間、平均週轉時間還要更少應該加上一個條件「在全部進程同時可運行時,採用SJF調 度算法的平均等待時間、平均週轉時間最少」;或者說「在全部進程都幾乎同時到達時,採用SIF調度算法的平均等待時間、平均週轉時間最少」;若是不加,上述前提條件,則應該說「搶佔式的短做業/進程優先調度算法(最短剩餘時間優先, SRNT算法)的平均等待時間、平均週轉時間最少」

3.雖然嚴格來講, SJF的平均等待時間、平均週轉時間並不一- 定最少,但相比於其餘算法(如FCFS) ,
SJF依然能夠得到較少的平均等待時間、平均週轉時間

4.若是選擇題中遇到「SJF算法的平均等待時間、平均週轉時間最少」的選項,那最好判斷其餘選項
是否是有很明顯的錯誤,若是沒有更合適的選項,那也應該選擇該選項

對FCFS和SJF兩種算法的思考…

FCFS算法是在每次調度的時候選擇一-個等德時間最長的做業(進程)爲其服務。可是沒有考慮到做業的運行時間,所以致使了對短做業不友好的問題

SJF算法是選擇一個執行時間最短的做業爲其服務。可是又徹底不考慮各個做業的等待時間,所以致使了對長做業不友好的問題,甚至還會形成飢餓問題

能不能設計一個算法,即考慮到各個做業的等待時間,也能兼顧運行時間呢?

在這裏插入圖片描述

因而提出了高響應比優先(HRRN,Highest Response Ratio Next )算法

高響應比優先(HRRN,Highest Response Ratio Next )

在這裏插入圖片描述

高響應比優先算法:非搶佔式的調度算法,只有當前運行的進程主動放棄CPU時( 正常/異常完成,或主動阻塞),才須要進.行調度,調度時計算全部就緒進程的響應比,選響應比最高的進程上處理機。
計算公式:
在這裏插入圖片描述

例題:各進程到達就緒隊列的時間、須要的運行時間以下表所示。使用高響應比優先調度算法,計算各進程的等待時間、平均等待時間、週轉時間、平均週轉時間、帶權週轉時間、平均帶權週轉時間。
在這裏插入圖片描述

0時刻:只有P1到達就緒隊列,Pr. 上處理機
7時刻(P1主動放棄CPU) :就緒隊列中有P2 (響應比=(5+4)/4=2.25)、P3((3+1)/1=3)、 P4((2+4)/4=1.5),
8時刻(P3完成) : P2(2.5)、 P4(1.75)
12時刻(P2完成) :就緒隊列中只剩下P4

三種算法的總結:

在這裏插入圖片描述

:這幾種算法主要關心對用戶的公平性、平均週轉時間、平均等待時間等評價系統總體性能的指標,可是不關心「響應時間」,也並不區分任務的緊急程度,所以對於用戶來講,交互性很糟糕。所以這三種算法通常適合用於早期的批處理系統,固然,FCFS算法 也常結合其餘的算法使用,在如今也扮演着很重要的角色。而適合用於交互式系統的調度算法將在下次介紹....

相關文章
相關標籤/搜索