No Ubuntu eles são contínuos. Em outros sistemas operacionais, pode ser diferente.
O kernel aloca PIDs no intervalo de (RESERVED_PIDS, PID_MAX_DEFAULT). Ele faz isso sequencialmente em cada namespace (tarefas em diferentes namespaces podem ter os mesmos IDs). Caso o intervalo esteja esgotado, a atribuição de pid envolve.
( link )
Mente embora ...
- O agendamento do kernel pode bifurcar um processo para que pareça pular números.
- Um PID desaparecerá quando essa tarefa terminar.
- Os PIDs não são reutilizados até que PID_MAX_DEFAULT seja atingido.
- Um PID reservado é ignorado.
Alguns tópicos em stackoverflow:
Nos comentários é um comando para testar a atribuição de PIDs:
for i in {1..20}; do sh -c 'echo $$'; done