- Ao pesquisar sobre PID 0 na web, a maioria das informações encontradas está errada.
- Ao buscar por PID 0 no Google, Bing, DuckDuckGo e Kagi, foi difícil encontrar uma resposta correta.
- Informações incorretas da Wikipedia se espalharam por 16 anos, e muitos sites passaram a citá-las.
História do PID 0
- O PID 0 está envolvido em escalonamento e gerenciamento de energia, e não tem relação com paginação.
- O PID 0 atua como o agendador executado quando um núcleo de CPU não tem nada para fazer.
- Nos primeiros Unix, o PID 0 fazia trabalhos relacionados ao gerenciamento de memória, mas isso não ocorre nos Unix modernos.
O papel real do PID 0
- O PID 0 inicia o kernel e, depois disso, passa a gerenciar os núcleos da CPU.
- No kernel Linux, o PID 0 é implementado pela função
do_idle.
- Em outros kernels, como o FreeBSD, ele desempenha um papel semelhante.
A confusão em torno do PID 0
- O significado de PID é diferente no kernel e no espaço do usuário.
- No kernel,
task_struct representa uma thread, e PID significa ID da thread.
- No espaço do usuário, PID representa um processo, e isso é igual ao ID do grupo de threads.
PID 0 em sistemas multicore
- Em sistemas multicore, existe uma thread idle para cada núcleo de CPU.
- Todas essas threads idle pertencem ao grupo de threads 0.
- No espaço do usuário, isso é reconhecido como PID 0.
Conclusão
- O PID 0 existe e é a thread que inicia o kernel.
- O PID 0 executa as tarefas iniciais de inicialização do kernel e, depois, se transforma em uma thread idle.
- O PID 0 não tem relação com gerenciamento de memória.
- Em sistemas multicore, há uma thread idle por núcleo, e todas pertencem ao grupo de threads 0.
Opinião do GN⁺
- A importância da informação correta: quando informações erradas se espalham por muito tempo, muitas pessoas passam a aceitá-las como verdade. Isso relembra a importância de fornecer informação precisa.
- A complexidade do kernel: o processo de inicialização do kernel e o mecanismo de escalonamento são extremamente complexos, e entendê-los ajuda bastante engenheiros de software.
- A confusão sobre PID: como o significado de PID é diferente no kernel e no espaço do usuário, é importante compreender isso com clareza.
- Sistemas multicore: entender o papel do PID 0 nos sistemas multicore modernos ajuda na otimização do desempenho do sistema.
- A influência da Wikipedia: isso mostra o quanto as informações da Wikipedia influenciam muitos sites da web. Reforça a importância de manter informações corretas e atualizadas.
3 comentários
Lembrando daquele velho incidente em que aquele agent deu
kill -9 0...Interessante.
Comentários do Hacker News
getppidretorna 0, isso significa que o pai está em outro namespace de PID.kill 0: compartilhamento de um script que usakill 0para executar um comando por um tempo limitado e depois encerrá-lo.