Bem, nos sistemas operacionais modernos, existe algo chamado "agendador de tarefas". É executado periodicamente (muito rápido) e seleciona (de uma lista) a próxima tarefa a ser executada. As tarefas podem ocorrer em vários estados, como selecionar, bloquear, dormir etc.
Se todas as tarefas estiverem no modo de seleção (aguardando algo do sistema operacional) e não puderem ser atendidas, ou algumas estiverem em suspensão, etc., para que não haja um uso pesado do processador, o agendador de tarefas chamará uma tarefa especial chamada "inativa "
Se o driver da CPU verificar a tabela do agendador de tarefas e verificar se a tarefa ociosa está executando a maior parte do tempo da CPU, ele simplesmente enviará um comando ao circuito PLL de geração de relógio da CPU para reduzir seu relógio. Pelo contrário, se a tarefa ociosa levar cada vez menos tempo da CPU (o que significa que a CPU está sendo usada intensamente), o driver da CPU aumentará a velocidade da CPU.
Não é muito difícil, mas há um limite inferior em que a CPU não pode ser reduzida, porque nem todas as CPUs são totalmente estáticas (portanto, elas precisam de ciclos de atualização). Cpus totalmente estáticos podem chegar a 0 (zero) MHz, porque não há estado a ser perdido se o relógio for parado.