
進階的行程管理
|
195
器密集型應用程式的開銷是用戶自己的責任,而不是個別應用程式的責任。用戶可透過
nice
這個 shell 命令(本章稍後會討論到)為應用程式的效能設定其相對優先值。
行程優先權
這一節所探討的內容適合正常、非即時的行程。即時行程需要使用不同
的排班規則,以及不同的優先權系統。本章稍後會探討即時系統的相關
議題。
Linux 不會隨意對行程進行排班。事實上,應用程式會被指定
優先權
(
priority
),優先
權會對行程可運行多久時間造成影響:前面提到,分配給行程的處理器時間比列,會經
由它的 nice 值加上權重。以往,Unix 將優先權稱為
友善值
(
nice value
),因為友善值背
後的概念是透過調低一個行程的優先權來「善待」(be nice)系統上其他行程,這讓其
他行程得以使用較多之系統的處理器時間。
友善值的有效範圍從 -20 到 19(包括 -20 和 19),而且預設值為 0。你可能會有點困
惑,一個行程的友善值越低,則它的優先權就越高,而且它的時段也越大;反過來說,
友善值越高,則行程的優先權就越低,而且它的時段也越小。因此調高一個行程的友善
值就等於善待系統上的其他行程。但是以數字來看的確令人混淆。當我們說一個行程具
有「高優先權」,我們的意思是說,相較於優先權較低的行程,它可以運行比較久的時
間,但此類行程將具有較低的友善值。
nice()
Linux 提供了若干系統呼叫,可用於取得以及設定行程的友善值。
nice()
是其中最簡單
的一個:
#include <unistd.h> ...