# Tempo ocioso do sistema

Nos sistemas operacionais Windows NT, o Tempo ocioso do sistema ou System Idle Process, contém um ou mais threads de kernel que são executados quando nenhum outro thread executável pode ser agendado em uma CPU. Em um sistema multiprocessador, há um thread ocioso associado a cada núcleo da CPU. Para um sistema com a tecnologia hyper-threading habilitada, há um thread ocioso para cada processador lógico.
O objetivo principal do processo ocioso e seus encadeamentos é eliminar o que de outra forma seria um caso especial no escalonador. Sem os threads ociosos, poderia haver casos em que nenhum thread pudesse ser executado (ou "Pronto" em termos de estados de agendamento do Windows). Como os encadeamentos ociosos estão sempre em um estado Pronto (se já não estiverem em execução), isso nunca pode acontecer. Assim, sempre que o escalonador é chamado devido ao thread atual deixar sua CPU, outro thread sempre pode ser encontrado para ser executado nessa CPU, mesmo que seja apenas o thread ocioso da CPU. O tempo de CPU atribuído ao processo ocioso é, portanto, indicativo da quantidade de tempo de CPU que não é necessária ou desejada por nenhum outro encadeamento no sistema.
O escalonador trata os encadeamentos ociosos como casos especiais em termos de prioridade de escalonamento de encadeamentos. Os encadeamentos inativos são agendados como se cada um deles tivesse uma prioridade inferior à que pode ser definida para qualquer encadeamento comum.
Devido à função do processo ocioso, sua medição de tempo de CPU (visível, por exemplo, pelo Gerenciador de Tarefas do Windows) pode fazer parecer aos usuários que o processo ocioso está monopolizando a CPU. No entanto, o processo ocioso não usa os recursos do computador (mesmo quando declarado em execução em alta porcentagem). Seu "uso" de tempo de CPU é uma medida de quanto tempo de CPU não está sendo usado por outros threads.
No Windows 2000 e posterior, os threads no processo ocioso do sistema também são usados ​​para implementar a economia de energia da CPU. O esquema exato de economia de energia depende da versão do sistema operacional e dos recursos de hardware e firmware do sistema em questão. Por exemplo, em processadores x86 no Windows 2000, o thread ocioso executará um loop de instruções de parada, o que faz com que a CPU desligue muitos componentes internos até que um pedido de interrupção chegue. Versões posteriores do Windows implementam métodos mais complexos de economia de energia da CPU. Nesses sistemas, o thread ocioso chamará rotinas na Camada de Abstração de Hardware para reduzir a velocidade do clock da CPU ou implementar outros mecanismos de economia de energia.
Existem fontes mais detalhadas de tais informações disponíveis através do sistema de monitoramento de desempenho do Windows (acessível com o programa perfmon), que inclui uma categorização mais detalhada do uso da CPU. Um subconjunto limitado da categorização de tempo de CPU também pode ser acessado por meio do Gerenciador de Tarefas, que pode exibir o uso de CPU por CPU e categorizado por tempo gasto no código do usuário vs. kernel.

## Veja também

* Lista de componentes do Microsoft Windows
* Ocioso (CPU)
* Microsoft Windows
* HLT (instruções x86)
* O Process Explorer