調度算法
一、先來先服務(FCFS,First Come First Serve)
例題:各進程到達就緒隊列的時間、需要的運行時間如下表所示。使用先來先服務調度算法,計算各進程的等待時間、平均等待時間、周轉時間、平均周轉時間、帶權周轉時間、平均帶權周轉時間。
先來先服務調度算法:按照到達的先后順序調度,事實上就是等待時間越久的越優先得到服務。
因此,調度順序為:P1 →P2→P3→P4
注意:本例中的進程都是純計算型的進程,一個進程到達后要么在等待,要么在運行。如果是又有計算、又有I/O操作的進程,其等待時間就是周轉時間-運行時間-I/O操作的時間
二、短作業優先(SJF, Shortest Job First )
例題:各進程到達就緒隊列的時間、需要的運行時間如下表所示。使用非搶占式(嚴格來說,用於進程調度應該稱為短進程優先調度算法(SPF))的短作業優先調度算法,計算各進程的等待時間、平均等待時間、周轉時間、平均周轉時間、帶權周轉時間、平均帶權周轉時間。
短作業/進程優先調度算法:每次調度時選擇當前已到達且運行時間最短的作業/進程。
因此,調度順序為:P1→P3→P2→P4
對比FCFS算法的結果,顯然SPF算法的平均等待/周轉/帶權周轉時間都要更低
例題:各進程到達就緒隊列的時間、需要的運行時間如下表所示。使用搶占式(搶占式的短作業優先算法又稱“最短剩余時間優先算法(SRTN))的短作業優先調度算法,計算各進程的等待時間、平均等待時間、周轉時間、平均周轉時間、帶權周轉時間、平均帶權周轉時間。
最短剩余時間優先算法:每當有進程加入就緒隊列改變時就需要調度,如果新到達的進程剩余時間比當前運行的進程剩余時間更短,則由新進程搶占處理機,當前運行進程重新回到就緒隊列。另外,當一個進程完成時也需要調度
需要注意的是,當有新進程到達時就緒隊列就會改變,就要按照上述規則進行檢查。以下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)
對比非搶占式的短作業優先算法,顯然搶占式的這幾個指標又要更低
注意幾個小細節:
1.如果題目中未特別說明,所提到的“短作業/進程優先算法”默認是非搶占式的
2.很多書上都會說“SJF調度算法的平均等待時間、平均周轉時間最少”
嚴格來說,這個表述是錯誤的,不嚴謹的。之前的例子表明,最短剩余時間優先算法得到的平均等待時間、平均周轉時間還要更少。應該加上一個條件“在所有進程同時可運行時,采用SJF調度算法的平均等待時間、平均周轉時間最少”;或者說“在所有進程都幾乎同時到達時,采用SJF調度算法的平均等待時間、平均周轉時間最少”;如果不加上述前提條件,則應該說“搶占式的短作業/進程優先調度算法(最短剩余時間優先, SRNT算法)的平均等待時間、平均周轉時間最少”
3.雖然嚴格來說,SIF的平均等待時間、平均周轉時間並不一定最少,但相比於其他算法(如FCFS),SJF依然可以獲得較少的平均等待時間、平均周轉時間
4.如果選擇題中遇到“SJF算法的平均等待時間、平均周轉時間最少”的選項,那最好判斷其他選項是不是有很明顯的錯誤,如果沒有更合適的選項,那也應該選擇該選項
對FCFS和SJF兩種算法的思考..
FCFS算法是在每次調度的時候選擇一個等待時間最長的作業(進程)為其服務。但是沒有考慮到作業的運行時間,因此導致了對短作業不友好的問題
SJF算法是選擇一個執行時間最短的作業為其服務。但是又完全不考慮各個作業的等待時間,因此導致了對長作業不友好的問題,甚至還會造成飢餓問題
能不能設計一個算法,即考慮到各個作業的等待時間,也能兼顧運行時間呢?
三、高響應比優先(HRRN,Highest Response Ratio Next)
例題:各進程到達就緒隊列的時間、需要的運行時間如下表所示。使用高響應比優先調度算法,計算各進程的等待時間、平均等待時間、周轉時間、平均周轉時間、帶權周轉時間、平均帶權周轉時間。
高響應比優先算法:非搶占式的調度算法,只有當前運行的進程主動放棄CPU時(正常/異常完成,或主動阻塞),才需要進行調度,調度時計算所有就緒進程的響應比,選響應比最高的進程上處理機。
注:這幾種算法主要關心對用戶的公平性、平均周轉時間、平均等待時間等評價系統整體性能的指標,但是不關心“響應時間”,也並不區分任務的緊急程度,因此對於用戶來說,交互性很糟糕。因此這三種算法一般適合用於早期的批處理系統,當然,FCFS算法也常結合其他的算法使用,在現在也扮演着很重要的角色。而適合用於交互式系統的調度算法將在下個小節介紹...
提示:一定要動手做課后習題!這些算法特性容易考小題,算法的使用常結合調度算法的評價指標在大題中考察。