作業系統中排程演算法(FCFS、RR、SPN、SRT、HRRN)
轉自:https://blog.csdn.net/xieminyao123/article/details/79116985
決策模式
決策模式說明選擇函式在執行的瞬間的處理方式,通常分為以下兩類:
非搶佔:一旦進入執行狀態,就不會終止直到執行結束。
搶佔:當前正在執行的程式可以被打斷,並轉移到就緒態。
一個排程演算法是否能搶佔,對程式的順序有著極大的影響。
先來先服務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排程演算法的一種綜合平衡,同時考慮每個作業的等待時間和估計的執行時間。在每次進行作業排程時,先計算後備作業佇列中每個作業的響應比,從中選出響應比最高的作業投入執行。
響應比的變化規律可描述為:
響應比=(等待時間+服務時間)/服務時間
根據公式可知:
當作業的等待時間相同時,則要求服務時間越短,其響應比越高,有利於短作業。
當要求服務時間相同時,作業的響應比由其等待時間決定,等待時間越長,其響應比越高,因而它實現的是先來先服務。
對於長作業,作業的響應比可以隨等待時間的增加而提高,當其等待時間足夠長時,其響應比便可升到很高,從而也可獲得處理機。克服了飢餓狀態,兼顧了長作業。
---------------------
作者:光羽住一
來源:CSDN
原文:https://blog.csdn.net/xieminyao123/article/details/79116985
版權宣告:本文為博主原創文章,轉載請附上博文連結!
相關文章
- 作業系統排程演算法作業系統演算法
- 作業系統之排程演算法作業系統演算法
- 【作業系統】4.程序排程演算法作業系統演算法
- 作業系統常用的排程演算法總結作業系統演算法
- 作業系統cmd演算法作業系統演算法
- 【作業系統2】作業系統啟動過程與異常/中斷,系統呼叫作業系統
- 作業系統課程設計感受作業系統
- 【作業系統】--處理器排程作業系統
- 作業系統啟動的過程作業系統
- 【作業系統】銀行家演算法作業系統演算法
- 作業系統常見演算法作業系統演算法
- [作業系統]銀行家演算法作業系統演算法
- docker作業系統的攢建過程Docker作業系統
- 作業系統動態庫呼叫過程作業系統
- 作業系統課程實踐報告作業系統
- 0512作業系統之程式排程作業系統
- 作業系統(1)——作業系統概述作業系統
- 作業系統(一):作業系統概述作業系統
- 作業系統(二):作業系統結構作業系統
- 【作業系統】作業系統綜述(一)作業系統
- 【作業系統】磁碟的四種基本排程演算法(圖表說明)作業系統演算法
- 作業系統 作業5作業系統
- 作業系統精髓設計原理 程式排程作業系統
- 作業系統(5)處理器排程管理作業系統
- 0512 作業系統程式排程實驗作業系統
- 作業系統(Linux)--按優先數排程演算法實現處理器排程作業系統Linux演算法
- 主宰作業系統的經典演算法作業系統演算法
- 作業系統1—作業系統概論(上)作業系統
- 作業系統2—作業系統概論(下)作業系統
- 《作業系統》作業系統
- 作業系統作業系統
- [作業系統]作業系統
- 作業系統: Unix作業系統演進簡史作業系統
- 計算機作業系統|作業系統引論計算機作業系統
- 各個作業系統的 作業系統日誌作業系統
- Windows 作業系統引導過程 BIOS & EFIWindows作業系統iOS
- 為什麼要學習作業系統課程?作業系統
- Dominate【作業系統的經典演算法】作業系統演算法