| System Idle Process | |
|---|---|
![]() Windows Task Manager inWindows XP showing System Idle Process usage at 99%, indicating that no other process is using significant CPU time. | |
| Operating system | Microsoft Windows |
| Type | Kernel |
InWindows NT operating systems, theSystem Idle Process contains one or more kernelthreads which run when no other runnable thread can be scheduled on a CPU. In a multiprocessor system, there is one idle thread associated with each CPU core. For a system withhyperthreading enabled, there is an idle thread for each logical processor.
The primary purpose of the idle process and its threads is to eliminate what would otherwise be a special case in the scheduler. Without the idle threads, there could be cases when no threads were runnable (or "Ready" in terms of Windows scheduling states). Since the idle threads are always in a Ready state (if not already Running), this can never happen. Thus whenever the scheduler is called due to the current thread leaving its CPU, another thread can always be found to run on that CPU, even if it is only the CPU's idle thread. The CPU time attributed to the idle process is therefore indicative of the amount of CPU time that isnot needed or wanted by any other threads in the system.
The scheduler treats the idle threads as special cases in terms of thread scheduling priority. The idle threads are scheduled as if they each had a priority lower than can be set for any ordinary thread.
Because of the idle process's function, its CPU time measurement (visible through, for example,Windows Task Manager) may make it appear to users that the idle process is monopolizing the CPU. However, the idle process does not use up computer resources (even when stated to be running at a high percent). Its CPU time "usage" is a measure of how much CPU time is not being used by other threads.
In Windows 2000 and later the threads in the System Idle Process are also used to implementCPU power saving. The exact power saving scheme depends on the operating system version and on the hardware andfirmware capabilities of the system in question. For instance, onx86 processors under Windows 2000, the idle thread will run a loop ofhalt instructions, which causes the CPU to turn off many internal components until aninterrupt request arrives. Later versions of Windows implement more complex CPU power saving methods. On these systems the idle thread will call routines in theHardware Abstraction Layer to reduce CPU clock speed or to implement other power-saving mechanisms.
There are more detailed sources of such information available through Windows' performance monitoring system (accessible with the perfmon program), which includes more finely grained categorization of CPU usage. A limitedsubset of the CPU time categorization is also accessible through theTask Manager, which can display CPU usage by CPU, and categorized by time spent in user vs. kernel code.