Por que o processo ocioso do sistema está consumindo todos os recursos?

Do departamento “o senhor não pode inventar essas coisas”, esta joia de 2003 de blogging O.G. John Dvorak:

PROCESSO DE TEMPO OCIOSO. De vez em quando, o sistema entra em um modo ocioso, exigindo de cinco minutos a meia hora para relaxar. É estranho, e quase sempre tenho que reiniciar o sistema. Quando pressiono Ctrl-Alt-Delete, vejo que o processo ocioso do sistema está consumindo todos os recursos e 95% dos ciclos do processador. Fazendo o quê? Não fazendo nada? De vez em quando, depois de clicar em toda a tela para tentar fazer com que o sistema faça algo além de ficar ocioso, todos os seus cliques se acendem repentinamente e a tela fica louca de atividade. Isso não está certo.

Lembro-me de que o senhor de ler a coluna de Dvorak na PC Magazine na época, e fiquei pensando duas vezes. Dvoraks diz o quê?

Gerenciador de tarefas, mostrando o processo ocioso do sistema

Em defesa de John, parece que ele estava tendo algum tipo de problema estranho e não relacionado que ele atribuiu erroneamente à tarefa ociosa. Mas sua profunda incompreensão de como essa parte fundamental da ciência da computação funciona é um pouco perturbadora para o senhor. um jornalista de informática de sua posição e estatura.

Caso haja alguém lendo isto que não saiba entende como o Processo de inatividade do sistema funciona (Olá, Sr. Dvorak!), o verbete da Wikipedia para Tarefa ociosa é excepcionalmente sucinto, por isso vou citá-lo na íntegra:

Na computação, uma tarefa ociosa é uma tarefa especial carregada pelo agendador do sistema operacional somente quando não há nada para o computador fazer. A tarefa ociosa pode ser codificada no agendador ou pode ser implementada como uma tarefa separada com a menor prioridade possível. Uma vantagem da última abordagem é que os programas que monitoram o status do sistema podem ver a tarefa ociosa junto com todas as outras tarefas; um exemplo é o processo ocioso do sistema do Windows NT.

Nos processadores modernos, onde uma instrução HLT (halt) economiza quantidades significativas de energia e calor, a tarefa ociosa quase sempre consiste em um loop que executa repetidamente as instruções HLT. No entanto, em computadores mais antigos, em que a dissipação de temperatura era quase constante com a carga da CPU, o programa geralmente fazia coisas inúteis, como piscar as luzes do painel frontal em um padrão divertido ou reconhecível.

Em geral, isso fazia com que, em sistemas com compartilhamento de tempo, se o senhor tivesse a sorte de ter acesso à sala de computadores, poderia dar uma olhada nas luzes do painel frontal para ver se a máquina estava ocupada. Se o padrão ocioso aparecesse muito raramente, a máquina estava muito carregada e a pessoa poderia ir almoçar antes de esperar a conclusão de um trabalho; por outro lado, se o padrão ocioso estivesse piscando claramente, a pessoa poderia executar o trabalho imediatamente.

Nos sistemas operacionais do tipo Unix, como o Linux, a tarefa ociosa tem ID de processo zero e nunca sai. Outra tarefa especialmente distinta em sistemas operacionais do tipo Unix é o processo init, que faz pouco mais do que esperar que seus processos filhos morram.

Em outras palavras, se a tarefa ociosa estiver “consumindo 95% dos ciclos do processador”, isso é normal: significa simplesmente que a CPU não está trabalhando muito em nada no momento.