2.2.4調度算法(1)


調度算法

image-20210918225232607

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

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

image-20210918232106451

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

​ 因此,調度順序為:P1 →P2→P3→P4

image-20210918232131120

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

image-20210918232357132

image-20210918232546220



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

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

image-20210918232106451

​ 短作業/進程優先調度算法:每次調度時選擇當前已到達運行時間最短的作業/進程。

​ 因此,調度順序為:P1→P3→P2→P4

image-20210918233009514

image-20210918233027793

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


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

image-20210918232106451

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

image-20210918233704073

​ 需要注意的是,當有新進程到達時就緒隊列就會改變,就要按照上述規則進行檢查。以下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)

image-20210918234254651

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


注意幾個小細節:

​ 1.如果題目中未特別說明,所提到的“短作業/進程優先算法”默認非搶占式

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

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

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

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

image-20210918235907331


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

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

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

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



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

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

image-20210918232106451

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

image-20210919001851337

image-20210919001806537

image-20210919001952659



image-20210919002044077

​ 注:這幾種算法主要關心對用戶的公平性、平均周轉時間、平均等待時間等評價系統整體性能的指標,但是不關心“響應時間”,也並不區分任務的緊急程度,因此對於用戶來說,交互性很糟糕。因此這三種算法一般適合用於早期的批處理系統,當然,FCFS算法也常結合其他的算法使用,在現在也扮演着很重要的角色。而適合用於交互式系統的調度算法將在下個小節介紹...

提示:一定要動手做課后習題!這些算法特性容易考小題,算法的使用常結合調度算法的評價指標在大題中考察。


免責聲明!

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



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