
進階的行程管理
|
191
處理器密集及 I/O 密集行程
會持續耗用所有可用時段的行程稱為
處理器密集
(
processor-bound
)。此類行程極度
渴望 CPU 時間,而且會用完排班器指派給它的所有時段。最簡單的例子就是一個無窮
迴圈。
// 100% 處理器密集
while (1)
;
其他的例子包括科學計算、數學計算以及影像處理。
另一方面,會花比較多的時間在等待資源的行程稱為
I/O
密集
(
I/O-bound
)。 I/O 密集
行程常會進行和等待檔案或網路 I/O、等待鍵盤的輸入或者等待用戶移動滑鼠。I/O 密集
應用程式的例子,包括只會送出系統呼叫,要求核心進行 I/O 的公用程式,例如
cp
或
mv
,以及把許多時間花在等待用戶輸入的 GUI 應用程式。
處理器密集及 I/O 密集應用程式的差異在於,排班器會以對它們最有利的方式來調整排
班的行為。處理器密集應用程式渴望儘可能獲得最大的時段,這讓它們得以(透過時間
局限性)最大化快取區的命中率,以及讓它們的工作能夠盡快完成。相對而言,I/O 密
集行程不一定需要較大的時段,因為在它們送出 I/O 要求以及等待某個核心資源之前,
它們一般會運行一段非常短的時間。然而,I/O 密集行程將得利於排班器的優先關注。
如果受阻檔以及派送多個 I/O 要求之後,此類應用程式越快重新開始,則它越能善加利
用系統的硬體。此外,如果應用程式需要等待用戶的輸入,則它越快被排班,用戶對執
行未間斷的感受也越大。
要同時滿足處理器密集及 I/O 密集行程的需要並不容易。事實上,多數應用程式既是 ...