自私輪循CPU排程
作業系統中的排程演算法根據程序的到達時間或優先順序執行程序。每個演算法都透過搶佔或非搶佔方法選擇等待佇列中的程序。搶佔式演算法為具有更高優先順序的程序提供對 CPU 的訪問許可權,並搶佔任何正在以較低優先順序執行的其他程序。但在非搶佔式排程的情況下,當程序開始執行時,即使在就緒狀態下存在更高優先順序的程序,它也無法被搶佔。
傳統的輪循排程演算法是一種搶佔式演算法,其中每個程序在其執行中獲得固定數量的時間片或量子。在給定的時間片後,程序進入佇列的末尾,並且就緒佇列中的其他程序以 FCFS 模式進行服務。自私輪循演算法是傳統演算法的一種變體,但它為執行時間更長且具有高優先順序的程序提供支援,並且比傳統方法提供了更好的實現。
自私輪循排程
此演算法為執行時間更長且具有更高優先順序的程序提供 CPU 資源,並且佇列中的其他程序可以提高其優先順序以在短時間內獲得 CPU,因此稱為“自私”。就緒佇列中的每個程序都被分配一個優先順序級別,優先順序較高的程序比優先順序較低的程序接收更多的 CPU 時間。
在這裡,為就緒佇列中的所有程序建立兩個列表,即“新”和“已接受”。第一次進入佇列的程序必須等到“已接受”程序完成其服務。列表中的所有程序都透過應用傳統的輪循方法獲得相等數量的 CPU 時間,其中每個程序都被分配一個時間片來執行,並且在時間片內完成執行後,它被附加到佇列的末尾,從而為下一個程序提供執行的機會。
考慮一個示例,P1、P2 和 P3 是三個不同的程序,每個程序都有不同的優先順序級別。P1 被分配為高優先順序,其次是 P2,P3 的優先順序最低。為每個程序設定一個具有預定義時間片的輪循分配。
程序 P1 可以隨時請求作業系統提高其優先順序。其餘程序的優先順序級別將由作業系統更改。
其餘程序的優先順序級別將由作業系統更改。程序 P2 將請求一個包含更高級別的優先順序,作業系統將調整分配給 P2 的優先順序級別,使其優先順序高於 P1 和 P3。
因此,現在程序 P2 將在下一個程序中擁有最多的 CPU 時間。
如果某個程序不必要地使用了給定的時間片,這可能會導致其他程序等待更長時間。
這鼓勵程序有效地利用 CPU,而不是佔據 CPU。從這個例子中,說明了 SRR 的基本思想,其中每個程序都可以根據其活動動態地更改其優先順序,例如它使用了多少 CPU 時間或它等待 CPU 多長時間。
SRR 可以透過多種方式應用,並且有各種提高或降低程序優先順序的標準。系統可能會考慮程序的大小或它在等待 CPU 時已使用的 CPU 時間。
優點
透過有效利用 CPU 來提高系統吞吐量,因為每個程序只需要利用執行所需的 CPU 時間。
根據輪循演算法,每個程序都將分配相等數量的 CPU 時間。
缺點
任何程序都可以自私地利用所有分配的 CPU 時間,即使不需要。因此,其他程序會長時間等待獲取 CPU 以執行其處理。
執行其處理。對於基於時間約束工作的即時系統來說,它可能不是一個合適的演算法,在即時系統中,每個程序或任務都必須在給定時間段內完成。
對於需要較少 CPU 時間的程序來說,響應時間較高,因為它必須等待“已接受”程序完成其量子時間。
結論
自私輪循排程為高優先順序程序提供有效的 CPU 時間,新程序必須等到高優先順序程序完成其服務時間。它比普通的輪循排程或其他基於優先順序的排程技術更有效。CPU 從不空閒,因為程序會長時間執行,並且就緒佇列中的其他程序具有在給定時間片內完成執行的優先順序。但主要缺點是它不支援需要處理離散事件的即時系統。