SJF调度算法(操作系统)短作业优先和最短剩余时间优先
SJF短作業優先算法
算法思想: 追求更少的平均時間,最少的平均周轉時間,最少的平均平均帶權周轉時間
算法規則: 最短的作業/進程優先得到服務(所謂“最短”,是指要求服務時間最短)
用于作業/進程調度: 即可用于作業調度,也可用于進程調度。用于進程調度時稱為“短進程優先(SPF,Shortest Process First)算法”
是否可搶占?: SJF和SPF都是非搶占式的算法。但是也有搶占式的版本----最短剩余時間優先算法。(SRTN,Shortest Remaining Time Next)
優點: "最短的"平均等待時間、平均周轉時間
缺點: 不公平。對短作業有利,對長作業不利??赡墚a生==饑餓現象。==另外,進程/作業的運行時間都是由用戶提供的,并不一定真實,不一定能做到真正的短作業優先。
饑餓: 會導致饑餓
例題
例題:各進程到達就緒隊列的時間、需要的運行時間如下所示,使用非搶占式的短作業優先調度算法,計算各進程的等待時間、平均等待時間、周轉時間、平均周轉時間、帶權周轉時間、平均帶權周轉時間
| p1 | 0 | 7 |
| p2 | 2 | 4 |
| p3 | 4 | 1 |
| p1 | 5 | 4 |
短作業/進程優先調度算法:每次調度選擇當前已到達且運行時間最短的作業/進程。
經過簡單的分析之后,可以知道調度順序為p1–>p3–>p2–>p4
下面我們來用最短剩余時間來考慮:
| p1 | 0 | 7 |
| p2 | 2 | 4 |
| p3 | 4 | 1 |
| p1 | 5 | 4 |
最短剩余時間優先算法:每當有進程加入就緒隊列改變時就需要調度,如果新到達的進程剩余時間比當前運行的進程剩余時間更短,則由新進程搶占處理機,當前運行進程重新回到就緒隊列。另外,當一個進程完成時也需要調度。
需要注意的是,當有新進程到達時就緒隊列就會改變,就要按照上述規則就行檢查。以下pn(m)表示當前pn進程剩余時間為m。每個時刻的情況如下
(我們用黃色表示這個時刻剩余時間最短的進程)
- 0時刻(p1到達):p1(7)
- 2時刻(p2到達):p1(5) 、 p2(4)
- 4時刻(p3到達):p1(5)、p2(2)、p3(1)
- 5時刻(p3完成且p4剛好到達):p1(5)、p2(2)、p4(4)
- 7時刻(p2完成):p1(5)、=p4(4)
- 11時刻(p4完成):p1(5)
- 16時刻(p1完成):結束
周轉時間=完成時間-到達時間
帶權周轉時間=周轉時間 / 運行時間
等待時間=周轉時間- 運行時間
| 周轉時間 | p1=16-0=16 | p2=7-2=5 | p3=5-4=1 | p4=11-5=6 |
| 帶權周轉時間 | p1=16/7=2.28 | p2=5/4=1.25 | p3=1/1=1 | p4=6/4=1.5 |
| 等待轉時間 | p1=16-7=9 | p2=5-4=1 | p3=1-1=0 | p4=6-4=2 |
平均周轉時間=(16+5+1+6)/4=7
平均帶權周轉時間=(2.28+1.25+1+1.5)/4=1.5
平均等待時間=(9+1+0+2)/4=3
總結
以上是生活随笔為你收集整理的SJF调度算法(操作系统)短作业优先和最短剩余时间优先的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全加器——Verilog HDL语言
- 下一篇: 精准授时,GPS北斗卫星授时同步时钟系统