天天看點

2.2.4排程算法(1)

排程算法

2.2.4排程算法(1)

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

​ 例題:各程序到達就緒隊列的時間、需要的運作時間如下表所示。使用先來先服務排程算法,計算各程序的等待時間、平均等待時間、周轉時間、平均周轉時間、帶權周轉時間、平均帶權周轉時間。

2.2.4排程算法(1)

​ 先來先服務排程算法:按照到達的先後順序排程,事實上就是等待時間越久的越優先得到服務。

​ 是以,排程順序為:P1 →P2→P3→P4

2.2.4排程算法(1)

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

2.2.4排程算法(1)
2.2.4排程算法(1)

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

​ 例題:各程序到達就緒隊列的時間、需要的運作時間如下表所示。使用非搶占式(嚴格來說,用于程序排程應該稱為短程序優先排程算法(SPF))的短作業優先排程算法,計算各程序的等待時間、平均等待時間、周轉時間、平均周轉時間、帶權周轉時間、平均帶權周轉時間。

2.2.4排程算法(1)

​ 短作業/程序優先排程算法:每次排程時選擇目前已到達且運作時間最短的作業/程序。

​ 是以,排程順序為:P1→P3→P2→P4

2.2.4排程算法(1)
2.2.4排程算法(1)

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

​ 例題:各程序到達就緒隊列的時間、需要的運作時間如下表所示。使用搶占式(搶占式的短作業優先算法又稱“最短剩餘時間優先算法(SRTN))的短作業優先排程算法,計算各程序的等待時間、平均等待時間、周轉時間、平均周轉時間、帶權周轉時間、平均帶權周轉時間。

2.2.4排程算法(1)

最短剩餘時間優先算法:每當有程序加入就緒隊列改變時就需要排程,如果新到達的程序剩餘時間比目前運作的程序剩餘時間更短,則由新程序搶占處理機,目前運作程序重新回到就緒隊列。另外,當一個程序完成時也需要排程

2.2.4排程算法(1)

​ 需要注意的是,當有新程序到達時就緒隊列就會改變,就要按照上述規則進行檢查。以下Pn(m)表示目前Pn程序剩餘時間為m。各個時刻的情況如下:

​ 0時刻(P1到達):P1(7)

​ 2時刻(P2到達)????1(5)、 P2(4)

​ 4時刻(P3到達)????1(5) 、 P2(2)、 P3(1)

​ 5時刻(P3完成且P4剛好到達): P1(5)、 P2(2) 、 P4(4)

​ 7時刻(P2完成)????1(5)、 P4 (4)

​ 11時刻(P4完成):P1(5)

2.2.4排程算法(1)

​ 對比非搶占式的短作業優先算法,顯然搶占式的這幾個名額又要更低

​ 注意幾個小細節:

​ 1.如果題目中未特别說明,所提到的“短作業/程序優先算法”預設是非搶占式的

​ 2.很多書上都會說“SJF排程算法的平均等待時間、平均周轉時間最少”

​ 嚴格來說,這個表述是錯誤的,不嚴謹的。之前的例子表明,最短剩餘時間優先算法得到的平均等待時間、平均周轉時間還要更少。應該加上一個條件“在所有程序同時可運作時,采用SJF排程算法的平均等待時間、平均周轉時間最少”;或者說“在所有程序都幾乎同時到達時,采用SJF排程算法的平均等待時間、平均周轉時間最少”;如果不加上述前提條件,則應該說“搶占式的短作業/程序優先排程算法(最短剩餘時間優先, SRNT算法)的平均等待時間、平均周轉時間最少”

​ 3.雖然嚴格來說,SIF的平均等待時間、平均周轉時間并不一定最少,但相比于其他算法(如FCFS),SJF依然可以獲得較少的平均等待時間、平均周轉時間

​ 4.如果選擇題中遇到“SJF算法的平均等待時間、平均周轉時間最少”的選項,那最好判斷其他選項是不是有很明顯的錯誤,如果沒有更合适的選項,那也應該選擇該選項

2.2.4排程算法(1)

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

​ FCFS算法是在每次排程的時候選擇一個等待時間最長的作業(程序)為其服務。但是沒有考慮到作業的運作時間,是以導緻了對短作業不友好的問題

​ SJF算法是選擇一個執行時間最短的作業為其服務。但是又完全不考慮各個作業的等待時間,是以導緻了對長作業不友好的問題,甚至還會造成饑餓問題

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

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

​ 例題:各程序到達就緒隊列的時間、需要的運作時間如下表所示。使用高響應比優先排程算法,計算各程序的等待時間、平均等待時間、周轉時間、平均周轉時間、帶權周轉時間、平均帶權周轉時間。

2.2.4排程算法(1)

​ 高響應比優先算法:非搶占式的排程算法,隻有目前運作的程序主動放棄CPU時(正常/異常完成,或主動阻塞),才需要進行排程,排程時計算所有就緒程序的響應比,選響應比最高的程序上處理機。

2.2.4排程算法(1)
2.2.4排程算法(1)
2.2.4排程算法(1)

繼續閱讀