Como os processos no UNIX são numerados?

17

Não encontro 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 subsequentes e, às vezes, existem 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.

sintagma
fonte

Respostas:

18

Sim em ambos os aspectos.

Muitos processos têm vida curta. Eles obtêm um PID, executam, finalizam e o PID desaparece da tabela de processos.

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

Freqüentemente, 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, pode ser necessário aumentar o número, mas em novos sistemas operacionais, acredito que o número máximo seja tipicamente grande o suficiente para a maioria das cargas de trabalho.

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

Dê uma olhada nesta pergunta relacionada: /server/279178/what-is-the-range-of-a-pid-on-linux-and-solaris

Observe também que, relacionado a isso, está 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.

Johan
fonte
7

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

unperson325680
fonte
Você sabe qual o custo de desempenho, se houver algum, para isso?
23613 Bruce Ediger
@ Bruce: o primeiro patch proposto teve o pior desempenho de O (infty) devido ao randomize ingênuo. Mas acho que eles conseguiram algo seguro e utilizável. Eu não encontrei nada muito atual sobre o assunto ... não é o que eu acredito. :)
unperson325680
5
PIDs aleatórios me parecem segurança através da obscuridade.
27413 Johan Johan
Isso é o que é, principalmente ...
unperson325680 27/02
Além de iniciativas individuais, o Linux costumava propô-lo apenas através do patch do grsecurity , a equipe do kernel do Linux sempre se recusava a implementá-lo ( exemplo aqui ) e até a equipe do grsecurity finalmente o abandonou no final de 2006 .
WhiteWinterWolf