Como os processos no UNIX são numerados?

17

Não consigo encontrar nenhum padrão quando olho para a numeração de PIDs na tabela de processos ( ps -a ), pois os PIDs não são números subseqüentes e às vezes há grandes "lacunas" entre esses números. É porque pode haver alguns processos que são executados por um curto período de tempo e eles reservam alguns PIDs? Existe algum intervalo, após o qual a numeração dos processos é redefinida?

Estou usando o Mac OS X, mas acho que a resposta deve se aplicar ao UNIX em geral.

    
por syntagma 26.02.2013 / 11:17

2 respostas

18

Sim nas duas contas.

Muitos processos são de curta duração. Eles recebem um PID, executam, terminam e o PID desaparece da tabela de processos.

Os processos às vezes só vivem por uma fração de segundo!

Geralmente, quando os programas são iniciados, eles executam vários comandos como parte da verificação do sistema e da inicialização do ambiente.

O número máximo de PID depende do sistema e às vezes é configurável. Basicamente, se você sabe que terá um grande número de processos, talvez seja necessário aumentar o número, mas, em novos sistemas operacionais, acredito que o número máximo geralmente seja grande o suficiente para a maioria das cargas de trabalho.

PIDs são entradas na tabela de processos, e quanto mais você tem mais memória, a tabela de processos ocupa.

Veja esta questão relacionada: link

Observe também que relacionado a isso é o "número máximo de processos por usuário", que é uma medida para proteger contra um usuário mal-intencionado, criando intencionalmente muitos processos para monopolizar toda a tabela de processos.

    
por 26.02.2013 / 11:37
7

Também é possível configurar alguns kernels modernos para atribuir PIDs aleatórios a novos processos para melhorar a segurança. Pelo menos o Linux e o FreeBSD podem fazer isso com uma configuração sysctl, e o OpenBSD faz isso sempre. Nesses casos, você pode dizer menos sobre os esquemas de numeração.

    
por 26.02.2013 / 18:01