作業系統中排程演算法(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.程序排程演算法作業系統演算法
- 【作業系統2】作業系統啟動過程與異常/中斷,系統呼叫作業系統
- 作業系統啟動的過程作業系統
- 【作業系統】銀行家演算法作業系統演算法
- [作業系統]銀行家演算法作業系統演算法
- 作業系統課程實踐報告作業系統
- docker作業系統的攢建過程Docker作業系統
- 作業系統(1)——作業系統概述作業系統
- 作業系統(一):作業系統概述作業系統
- 【作業系統】磁碟的四種基本排程演算法(圖表說明)作業系統演算法
- 作業系統精髓設計原理 程式排程作業系統
- 作業系統(二):作業系統結構作業系統
- 主宰作業系統的經典演算法作業系統演算法
- Dominate【作業系統的經典演算法】作業系統演算法
- 作業系統 作業5作業系統
- 作業系統2—作業系統概論(下)作業系統
- 作業系統1—作業系統概論(上)作業系統
- 學習UbuntuLinux作業系統過程和經驗UbuntuLinux作業系統
- 《作業系統》作業系統
- [作業系統]作業系統
- 作業系統作業系統
- 計算機作業系統|作業系統引論計算機作業系統
- 作業系統: Unix作業系統演進簡史作業系統
- 作業系統綜合題之“採用時間片輪轉排程演算法(Round-Robin,RR)執行5個程序,P1程序週轉時間為多少”作業系統演算法
- verilog的RR輪詢排程演算法的程式碼實現演算法
- 作業系統4——處理機排程與死鎖作業系統
- 關於安裝VMware以及Linux作業系統過程Linux作業系統
- 作業系統-1.1_2作業系統四個特徵作業系統特徵
- 作業系統期末複習——四大演算法作業系統演算法
- 作業系統課程設計——處理機和程式排程演算法及記憶體分配回收機制作業系統演算法記憶體
- 作業系統原理作業系統
- Linux 作業系統Linux作業系統
- 作業系統概念作業系統
- NodeOS作業系統作業系統
- Linux作業系統Linux作業系統
- 作業系統是什麼?Linux是什麼作業系統?作業系統Linux
- 10.19:xshell、作業系統、系統命令作業系統