Путешествие по процессам Windows – PID 0 (системный холостой процесс)
Цель этого процесса – дать процессору что-то выполнить, если больше нечего делать (поэтому он называется холостым ;-)). Давайте подумаем о следующей ситуации, у нас есть процесс, использующий 30% процессора, в таком случае PID 0 (System Idle) будет потреблять оставшиеся 70%. Кроме того, Idle – это первый процесс, который запускается ядром.
Более того, для каждого vCPU, определенного ОС, существует поток ядра System Idle (см. скриншот ниже, где это показано. VM, которую я использовал, имела 3 vCPU – также смотрите первое поле в таблице, показывающее ” Processor”).
Причина наличия “Idle Process” заключается в том, чтобы избежать крайнего случая, когда планировщик (расписание Windows, основанное на потоках) не имеет ни одного потока в состоянии “Ready” для следующего выполнения. Кстати, существуют также другие планировщики IO и Memory, о которых мы поговорим в одной из следующих статей.
Когда выполняются потоки ядра, они также могут выполнять различные трюки по энергосбережению процессора. Одним из них может быть остановка различных неиспользуемых компонентов до получения следующего прерывания. Потоки ядра также могут вызывать функции в HAL (уровень абстракции аппаратного обеспечения, подробнее об этом в будущем) для выполнения таких задач, как снижение тактовой частоты процессора. То, какая оптимизация выполняется, зависит от версии Windows, аппаратного обеспечения и установленной прошивки.