決策模式
決策模式說明選擇函數在執行的瞬間的處理方式,通常分爲以下兩類:
非搶佔:一旦進入運行狀態,就不會終止直到運行結束。
搶佔:當前正在運行的進程可以被打斷,並轉移到就緒態。
一個調度算法是否能搶佔,對進程的順序有着極大的影響。
先來先服務FCFS
先來先服務是最簡單的策略,也成爲先進先出FIFO。首先它是一個非搶佔的。如字面的意思,它根據進程到達時間決定先運行哪一個進程。
這裏給出一個實際的例子。以表格的形式表現出在FIFO策略下各進程的情況。
簡單說就是依次執行完成,從時間軸上來看
以表格的形式展現:
其中開始時間是上一個進程的結束時間
結束時間=開始時間+服務/執行時間
週轉週期=結束時間-到達時間
帶權週轉時間=週轉時間/服務時間
最短進程優先SPN
也稱最短作業優先(Short Job First,SJF)。它也是一個非搶佔的。是根據服務的時間經行選擇。在這裏要注意下到達時間的順序。比如實例中單純以大小來排序的話是E-A-C-D-B,但正確的排序一定是A-B爲開頭。以時間爲順序:
例子中A運行結束時間爲3,這時只有B進程等待。所以A運行結束後直接運行B。B結束後時間點到9,CDE都在等待。這個時候就選擇服務時間最少的E,然後是較少的C,最後是D。以表格的形式展示:
最短剩餘時間優先SRT
SRT是針對SPN增加了搶佔機制的版本,就好比例子中B運行時間非常長,在這期間其他所有的進程都在等待,如果將其中斷,先處理所需時間少的,運行效率會有顯著提升。一定要先明確SRT是搶佔的。先給出時間爲順序的圖:
1. A先運行至2,B到達等待。
2. A運行到3結束,B開始運行。
3. B開始運行,運行到4時,C進程到達,且C只需要4,此時B還需要5。所以先運行C,B繼續等待。
4. C運行時間點到達6時,D到達,D需要5,進入等待,排在B後。
5. C運行結束,此時時間點是8,E到達,運行時間只要2,小於等待的BD,直接運行。
6. C運行結束,B開始運行。
7. B運行結束,D開始運行。
以表格的形式展現:
輪轉RR
輪轉也稱時間片技術(time slicing,SL),對於輪轉法,最重要的是時間片的長度。輪轉算法以一個週期(q)產生中斷,當中斷髮生時,當前運行的程序置於就緒隊列(隊尾)中,然後基於FCFS選擇下一個就緒作業運行。在這裏我們以時間片q=1舉例。
q=1,所以一次只能運行一個時間片。
0:A1運轉(右標表示運行了幾個)
1:A2運轉
2:B1運轉,A3等待(B開始)
3:A3運轉,B2等待
4:B2運轉,C1等待,(A結束)
5:C1運轉,B3等待(C開始)
6:B3運轉,D1等待,C2等待
7:D1運轉,C2等待,B4等待(D開始)
8:C2運行,B4等待,E1等待,D2等待
9:B4運行,E1等待,D2等待,C3等待
10:E1運行,D2等待,C3等待,B5等待(E開始)
11:D2運行,C3等待,B5等待,E2等待
12:C3運行,B5等待,E2等待,D3等待
13:B5運行,E2等待,D3等待,C4等待
14:E2運行,D3等待,C4等待,B6等待
15:D3運行,C4等待,B6等待(E結束)
16:C4運行,B6等待,D4等待
17:B6運行,D4等待(C結束)
18:D5運行,D6等待(B結束)
19:D6運行
20:D結束
表格展示:
高響應比優先HRRN
高響應比優先調度算法
高響應比優先調度算法主要用於作業調度,該算法是對FCFS調度算法和SJF調度算法的一種綜合平衡,同時考慮每個作業的等待時間和估計的運行時間。在每次進行作業調度時,先計算後備作業隊列中每個作業的響應比,從中選出響應比最高的作業投入運行。
響應比的變化規律可描述爲:
響應比=(等待時間+服務時間)/服務時間
根據公式可知:
當作業的等待時間相同時,則要求服務時間越短,其響應比越高,有利於短作業。
當要求服務時間相同時,作業的響應比由其等待時間決定,等待時間越長,其響應比越高,因而它實現的是先來先服務。
對於長作業,作業的響應比可以隨等待時間的增加而提高,當其等待時間足夠長時,其響應比便可升到很高,從而也可獲得處理機。克服了飢餓狀態,兼顧了長作業。