Что ж, в современных операционных системах есть нечто, называемое «планировщик задач». Он запускается периодически (очень быстро) и выбирает (из списка) следующую задачу для выполнения. Задачи могут быть во многих состояниях, таких как выбор, заблокирован, спит и т. Д.
Если все задачи находятся в режиме выбора (ожидая чего-то от операционной системы) и не могут быть обработаны, или некоторые из них находятся в спящем режиме и т. Д., Поэтому не требуется интенсивное использование выполняемого процессора, планировщик задач вызовет специальную задачу, которая называется «простоя». ».
Если драйвер ЦП проверяет таблицу планировщика задач и проверяет, что незанятое задание выполняется большую часть времени ЦП, он просто отправит команду в схему PLL генерации тактового сигнала ЦП, чтобы уменьшить его тактовую частоту. Напротив, если задача простоя занимает все меньше и меньше времени процессора (что означает, что процессор интенсивно используется), драйвер процессора увеличит скорость процессора.
Это не очень сложно, но есть нижний предел, при котором ЦП нельзя регулировать ниже, потому что не все ЦП полностью статичны (поэтому им нужны циклы обновления). Полностью статический процессор может опуститься до 0 (нуля) МГц, потому что нет никакого состояния, которое может быть потеряно, если часы остановлены.