操作系統中調度算法(FCFS、RR、SPN、SRT、HRRN)

決策模式

決策模式說明選擇函數在執行的瞬間的處理方式,通常分爲以下兩類:

非搶佔:一旦進入運行狀態,就不會終止直到運行結束。

搶佔:當前正在運行的進程可以被打斷,並轉移到就緒態。

 一個調度算法是否能搶佔,對進程的順序有着極大的影響。

先來先服務FCFS

  先來先服務是最簡單的策略,也成爲先進先出FIFO。首先它是一個非搶佔的。如字面的意思,它根據進程到達時間決定先運行哪一個進程。

  這裏給出一個實際的例子。以表格的形式表現出在FIFO策略下各進程的情況。

簡單說就是依次執行完成,從時間軸上來看


以表格的形式展現:

 

其中開始時間是上一個進程的結束時間

      結束時間=開始時間+服務/執行時間

      週轉週期=結束時間-到達時間

      帶權週轉時間=週轉時間/服務時間

最短進程優先SPN

也稱最短作業優先(Short Job First,SJF)。它也是一個非搶佔的。是根據服務的時間經行選擇。在這裏要注意下到達時間的順序。比如實例中單純以大小來排序的話是E-A-C-D-B,但正確的排序一定是A-B爲開頭。以時間爲順序:

 

例子中A運行結束時間爲3,這時只有B進程等待。所以A運行結束後直接運行BB結束後時間點到9CDE都在等待。這個時候就選擇服務時間最少的E,然後是較少的C,最後是D。以表格的形式展示:

 

最短剩餘時間優先SRT

SRT是針對SPN增加了搶佔機制的版本,就好比例子中B運行時間非常長,在這期間其他所有的進程都在等待,如果將其中斷,先處理所需時間少的,運行效率會有顯著提升。一定要先明確SRT是搶佔的。先給出時間爲順序的圖:

 

1. A先運行至2B到達等待。

2. A運行到3結束,B開始運行。

3. B開始運行,運行到4時,C進程到達,且C只需要4,此時B還需要5。所以先運行CB繼續等待。

4. C運行時間點到達6時,D到達,D需要5,進入等待,排在B後。

5. C運行結束,此時時間點是8E到達,運行時間只要2,小於等待的BD,直接運行。

6. C運行結束,B開始運行。

7. B運行結束,D開始運行。

以表格的形式展現:

 

 

輪轉RR

輪轉也稱時間片技術(time slicingSL),對於輪轉法,最重要的是時間片的長度。輪轉算法以一個週期(q)產生中斷,當中斷髮生時,當前運行的程序置於就緒隊列(隊尾)中,然後基於FCFS選擇下一個就緒作業運行。在這裏我們以時間片q=1舉例。

q=1,所以一次只能運行一個時間片。

0A1運轉(右標表示運行了幾個)

1A2運轉

2B1運轉,A3等待(B開始)

3A3運轉,B2等待

4B2運轉,C1等待,(A結束)

5C1運轉,B3等待(C開始)

6B3運轉,D1等待,C2等待

7D1運轉,C2等待,B4等待(D開始)

8C2運行,B4等待,E1等待,D2等待

9B4運行,E1等待,D2等待,C3等待

10E1運行,D2等待,C3等待,B5等待(E開始)

11D2運行,C3等待,B5等待,E2等待

12C3運行,B5等待,E2等待,D3等待

13B5運行,E2等待,D3等待,C4等待

14E2運行,D3等待,C4等待,B6等待

15D3運行,C4等待,B6等待(E結束)

16C4運行,B6等待,D4等待

17B6運行,D4等待(C結束)

18D5運行,D6等待(B結束)

19D6運行

20D結束

表格展示:

 

 

高響應比優先HRRN

高響應比優先調度算法

高響應比優先調度算法主要用於作業調度,該算法是對FCFS調度算法和SJF調度算法的一種綜合平衡,同時考慮每個作業的等待時間和估計的運行時間。在每次進行作業調度時,先計算後備作業隊列中每個作業的響應比,從中選出響應比最高的作業投入運行。 

響應比的變化規律可描述爲:

響應比=(等待時間+服務時間)/服務時間

根據公式可知:

當作業的等待時間相同時,則要求服務時間越短,其響應比越高,有利於短作業。

當要求服務時間相同時,作業的響應比由其等待時間決定,等待時間越長,其響應比越高,因而它實現的是先來先服務。

對於長作業,作業的響應比可以隨等待時間的增加而提高,當其等待時間足夠長時,其響應比便可升到很高,從而也可獲得處理機。克服了飢餓狀態,兼顧了長作業。






發佈了34 篇原創文章 · 獲贊 47 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章