系统空闲进程

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使用并分类用户和内核码的时间使用。

另请参阅

参考文献