4 ms·
>lower than IDLE Any idea why that's necessary ? So it's preempted by a IDLE process.
by ovi256 8y ago
>lower than IDLE
Any idea why that's necessary ? So it's preempted by a IDLE process.
- bonzini 8y agoIDLE is the priority of a process that runs only when the system is otherwise idle. It shouldn't be preempted by zeroing memory.
- na412 8y agoBut then under what circumstances will the zero page thread ever be scheduled?
- blattimwind 8y agoWhen there are no runnable idle threads.
- masklinn 8y agoIt's confusing, but "idle" is a priority class as well as a state: https://docs.microsoft.com/en-us/windows/desktop/procthread/scheduling-priorities https://docs.microsoft.com/en-us/windows/desktop/procthread/... The idle task (when there's nothing to run) doesn't have a priority at all, it just gets run when nothing else is available. the "idle" priority is an actual priority, for when there's no higher-priority task to run. The ZPT is prioritized below "idle", so super-duper-low priority.
- dTal 8y agoThank you for this clear explanation. It is confusing!
- chaosite 8y agoSo the zero page process runs when one core is busy but the rest are free?
- klodolph 8y agoIt runs when the there are no higher-priority processes to schedule on a particular core. IDLE processes are higher priority, so as long as an IDLE process can be scheduled, the zero page process won't run.
- JdeBP 8y agoWindows NT thread scheduling does not work that way. If the Zero Page Thread is ready to run, the processor's Idle Thread is not scheduled. Idle Threads do not live on ready queues, and are only dispatched when there is no thread available from the processor's ready queue. Also, do not conflate the user-thread idle priority class with the (non-)priorities of Idle Threads.