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.75

注意:本例中的進程都是純計算型的進程,一個進程到達后要么在等待,要么在運行。如果是又有計算。
I/O操作的進程,其等待時間就是周轉時間-運行時間- I/0操作的時間

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

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

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

在這里插入圖片描述

短作業/進程優先調度算法:每次調度時選擇當前已到達且運行時間最短的作業/進程。因此,調度順序為: P1→P3→P2→P4.

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

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

搶占式的短作業優先算法又稱“最短剩余時間優先算法(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算法 也常結合其他的算法使用,在現在也扮演着很重要的角色。而適合用於交互式系統的調度算法將在下次介紹…


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM