p>Em sistemas operativos do tipo Unix, são criados novos processos pela chamada de sistema fork()
. O PID é devolvido ao processo dos pais, permitindo que este se refira à criança em outras chamadas de função. O pai pode, por exemplo, esperar que a criança termine com a função waitpid()
, ou terminar o processo com kill()
.
Existem duas tarefas com IDs de processo especialmente distintos: swapper ou sched tem ID de processo 0 e é responsável pela paginação, e é de facto parte do kernel em vez de um processo normal de modo de utilizador. O processo ID 1 é normalmente o processo de init responsável principalmente pelo arranque e desligamento do sistema. Originalmente, o processo ID 1 não era especificamente reservado ao init por quaisquer medidas técnicas: tinha simplesmente este ID como consequência natural de ser o primeiro processo invocado pelo kernel. Os sistemas Unix mais recentes têm tipicamente componentes de kernel adicionais visíveis como ‘processos’, caso em que o PID 1 é activamente reservado para o processo de init para manter a consistência com os sistemas mais antigos.
IDs de processo, em primeiro lugar, são normalmente atribuídos numa base sequencial, começando em 0 e aumentando para um valor máximo que varia de sistema para sistema. Uma vez atingido este limite, a atribuição reinicia-se a 300 e aumenta novamente. Em macOS e HP-UX, a atribuição reinicia-se a 100. No entanto, para este e subsequentes passagens, quaisquer PID ainda atribuídos a processos são ignorados. Alguns consideram isto como uma potencial vulnerabilidade de segurança na medida em que permite extrair informação sobre o sistema, ou passar mensagens encobertas entre processos. Como tal, as implementações que estão particularmente preocupadas com a segurança podem escolher um método diferente de atribuição de PID. Em alguns sistemas, como o MPE/iX, é utilizado o PID mais baixo disponível, por vezes num esforço para minimizar o número de páginas do núcleo de informação do processo na memória.
O ID do processo actual é fornecido por uma getpid()
chamada do sistema, ou como uma variável $$
em shell. O ID do processo de um processo pai é obtido por um getppid()
system call.
On Linux, o ID máximo do processo é dado pelo pseudo-arquivo /proc/sys/kernel/pid_max
.
PidfileEdit
Alguns processos, por exemplo, o leitor de música moc e o daemon MySQL, escrevem o seu PID num local de ficheiro documentado, para permitir que outros processos o procurem.