系統空閒進程

在Windows NT操作系統中 ， 系統空閒進程包含着一個或多個於沒有其他線程於CPU中被排定時運行的內核線程 。 在多核系統中 ， 每一個CPU核心都對應了一個閒置進程 。 而對於啓用了超執行緒的系統 ， 每個邏輯處理器對應一個閒置進程 。 閒置進程和其線程的首要目的是爲了清除可能會導致調度程序出現特殊情況的程序 。 在沒有閒置線程的情況下將會出現沒有線程可執行的情況 （ 即Windows排定狀態中的 “ 就緒 ” 態 ） 。 由於閒置進程一直都處於就緒態 （ 如果未處於運行態 ） ， 所以這種情況不可能發生 。 因此噹噹前線程離開其CPU調度調度程序時 ， 另外一個線程將會運行在相同的CPU上 ， 即使它只是CPU的閒置進程 。 因此 ， 歸於空閒進程的CPU時間表示系統中任何其他線程不需要的CPU時間量 。 調度程序根據線程調度優先級將空閒線程視爲特殊情況 。 閒置線程的調度就好像它們有着與普通線程相比更低的優先度 。 因爲閒置進程的功能 ， 其CPU時間的測定 （ 可視化 ， 比如通過任務管理器 ） 看似是閒置進程壟斷了CPU的使用 。 然而 ， 閒置進程並不使用計算機資源 （ 即使是在看似過高的系統佔用的情況下 ） 。 它的CPU時間 " 用量 " 測量多少的CPU時間不被其他線程使用 。 在Windows 2000與後續版本中 ， 系統空閒進程的線程同樣用於實現中央處理器省電 。 實際能源節約方案基於操作系統版本 、 硬件和韌體能力 。 例如 ， 在Windows 2000的X86處理旗下 ， 閒置線程將會運行指令循環 ， 這將導致直到下一個出現時CPU的許多內部組件將會被關閉 。 之後版本的Windows實現了更復雜的CPU節電方法 。 這些系統將會調用硬體抽象層的例程來降低CPU時鐘速度或實現其他節能機制 。 Windows的性能監視程序 （ 可使用perfmon程序查看 ） 裏存在着這些詳細信息 ， 且提供了更詳細的CPU用量分類 。 CPU時間分類的受限子集可通過任務管理器查看 ， 它可顯示CPU的CPU使用並分類用戶和內核碼的時間使用 。