系統空閒行程

Windows NT作業系統中,系統空閒行程包含着一個或多個於沒有其他線程於CPU中被排定時執行的內核線程。在多核系統中,每一個CPU核心都對應了一個閒置行程。而對於啟用了超線程的系統,每個邏輯處理器對應一個閒置行程。

系統空閒行程
Windows XP中的工作管理員顯示系統空閒行程用量99%,指示沒有其他行程正使用CPU。
Windows XP中的工作管理員顯示系統空閒行程用量99%,指示沒有其他行程正使用CPU。
內建於基於Windows NT的作業系統

閒置行程和其線程的首要目的是為了清除可能會導致排程程式出現特殊情況的程式。在沒有閒置線程的情況下將會出現沒有線程可執行的情況(即Windows排定狀態中的「就緒」態)。由於閒置行程一直都處於就緒態(如果未處於執行態),所以這種情況不可能發生。因此噹噹前線程離開其CPU排程排程程式時,另外一個線程將會執行在相同的CPU上,即使它只是CPU的閒置行程。因此,歸於空閒行程的CPU時間表示系統中任何其他線程不需要的CPU時間量。

排程程式根據線程排程優先級將空閒線程視為特殊情況。閒置線程的排程就好像它們有着與普通線程相比更低的優先度。

因為閒置行程的功能,其CPU時間的測定(視覺化,比如通過工作管理員)看似是閒置行程壟斷了CPU的使用。然而,閒置行程並不使用電腦資源(即使是在看似過高的系統佔用的情況下)。它的CPU時間"用量"測量多少的CPU時間不被其他線程使用。

在Windows 2000與後續版本中,系統空閒行程的線程同樣用於實現中央處理器省電。實際能源節約方案基於作業系統版本、硬件和韌體能力。例如,在Windows 2000的X86處理旗下,閒置線程將會執行停止英語HLT (x86 instruction)指令迴圈,這將導致直到下一個中斷請求英語interrupt request出現時CPU的許多內部組件將會被關閉。之後版本的Windows實現了更複雜的CPU節電方法。這些系統將會呼叫硬件抽象層的常式來降低CPU時鐘速度或實現其他節能機制。

Windows的效能監視程式(可使用perfmon程式檢視)里存在着這些詳細資訊,且提供了更詳細的CPU用量分類。CPU時間分類的受限子集可通過工作管理員檢視,它可顯示CPU的CPU使用並分類用戶和內核碼的時間使用。

另請參閱

參考文獻