不同的 CPU 排程演算法具有不同屬性,選擇一個特定演算法會對某些進程更為有利。為了選擇演算法以便用於特定情景,我們必須考慮各個演算法的屬性。
為了比較 CPU 排程演算法,可以採用許多比較準則。選擇哪些特徵來比較,對於確定哪種演算法是最好的有本質上的區別。這些準則包括:
-
CPU 使用率:應使 CPU 盡可能地忙碌。從概念上講,CPU 使用率從 0% 到 100%。對於一個實際系統,它的範圍應從 40%(輕負荷系統)到 90%(重負荷系統)。
-
吞吐量:如果 CPU 忙於執行進程,那麼工作就在完成。一種測量工作的方法稱為吞吐量,它是在一個時間單元內進程完成的數量。對於長進程,吞吐量可能為每小時一個進程;對於短進程,吞吐量可能為每秒十個進程。
-
週轉時間:從一個特定進程的角度來看,一個重要準則是執行這個進程需要多長時間。從進程提交到進程完成的時間段稱為周轉時間。周轉時間為所有時間段之和,包括等待進入記憶體、在就緒佇列中等待、在 CPU 上執行和 I/O 執行。
-
等待時間:CPU 排程演算法並不影響進程執行和執行 I/O 的時間,它只影響進程在就緒佇列中因等待所需的時間。等待時間為在就緒佇列中等待所花時間之和。
-
響應時間:對於互動系統,周轉時間不是最佳準則。通常,進程可以相當早地產生輸出,並且繼續計算新的結果同時輸出以前的結果給使用者。因此,另一時間是從提交請求到產生第一響應的時間。這種時間稱為響應時間,是開始響應所需的時間,而非輸出響應所需的時間。周轉時間通常受輸出裝置速度的限制。
最大化 CPU 使用率和吞吐量,並且最小化周轉時間、等待時間和響應時間,這是可取的。在大多數情況下,優化的是平均值。然而,在有些情況下,優化的是最小值或最大值,而不是平均值。例如,為了保證所有使用者都能得到好的服務,可能要使最大響應時間最小。
對於互動系統(如桌面作業系統),研究人員曾經建議最小化響應時間的方差比最小化平均響應時間更為重要。具有合理的、可預見的響應時間的系統比平均值更小但變化大的系統更為可取。不過,在 CPU 排程演算法如何使得方差最小化的方面,所做的工作並不多。