到目前為止,在本操作係統教程中,您已經了解了操作係統的類型、操作係統的服務、操作係統的屬性、進程、進程調度,現在您將了解一些進程調度算法,您的係統將使用這些算法來選擇進程。
先到先得(FCFS)
讓我們從好處開始:
FCFS算法不涉及任何複雜的邏輯,它隻是將函數請求設置在一個隊列中,然後逐一執行。
因此,FCFS很容易實現。
最終,每個進程都將獲得運行的機會,因此不會發生饑餓。
是時候說說缺點了:
進程的搶占是不可替代的。如果一個進程已經啟動,那麼CPU將執行該方法直到它結束。
因為沒有搶占,如果一個進程執行了一段較長的時間,隊列後麵的進程需要等待較長的時間才能得到執行的機會。
最短作業優先(SJF)
從最短作業優先調度算法的優點開始。
根據定義,先執行較短的流程,然後執行較長的流程。
吞吐量增加了,因為通常在更少的時間內執行更多的進程。
缺點:
CPU應該提前知道進程所需的時間,但這是不可能的。
時間越長,等待的時間就越長,最終,它們會餓死。
注:搶占式最短作業優先調度與SJF調度有相同的優缺點。
輪循(RR)
以下是應用輪循調度的一些好處:
CPU為每個進程提供一定的硬性和硬性時間量,因此所有進程都具有相同的優先級。
饑餓不會發生,因為對於每個循環循環,每個流程都有一個嚴格且快速的執行時間。不遺漏任何流程。
缺點是:
RR中的吞吐量很大程度上取決於時間量子長度的選擇。如果時間量值比所需的長,它往往表現出與FCFS相同的行為。
如果時間量程比需要的短,CPU從一個進程切換到另一個進程的次數就會增加。這將導致CPU效率的降低。
基於優先級的調度
優先級調度的好處:
一個過程的重要性一般是選擇強化的記憶必要性,時間限製或用戶傾向。例如,一款高端遊戲將擁有更好的圖像,這意味著在遊戲過程中更新屏幕的方法將具有更高的優先級,從而實現更好的圖像性能。
一些缺點:
需要另一種調度算法來調度具有相同優先級的進程。
在戰術優先級調度中,一個改進的優先級進程可以在先前執行的低優先級進程之前完成。如果低優先級進程一直期待高優先級進程,就會發生饑餓。
調度算法在幾種情況下的使用
每個調度算法都有一個特點,那就是它是最簡單的選擇。讓我們來看看不同的情況:
情況1:
傳入的流程很短,並且不需要在特定的順序期間執行流程。
在這種情況下,FCFS的作用與SJF和RR不同,因為過程很短,這意味著沒有過程會等待一個擴展的時間。當每個進程被一個一個地執行時,每個進程最終都會被執行。
情況2:
流程是長流程和短流程的融合,因此,隻有當所有流程在給定時間內成功完成時,作業才會執行。
在這裏,輪循調度工作得很有效,因為它不會導致饑餓,並且為每個進程提供了相等的時間量。
情況3:
這些流程混合了基於用戶的流程和基於內核的流程。
在這種情況下,基於優先級的調度能夠有效地工作,因為與基於用戶的進程相比,基於內核的進程具有更高的優先級。
例如,調度器本身可能是一個基於內核的進程,它應該首先運行,以便能夠調度其他進程。