Qual é o valor máximo do ID do processo?

37

Qual é o valor máximo do ID do processo?

Além disso, é possível alterar um ID de processo?

    
por Dmitry Kodmov 18.07.2011 / 14:54

3 respostas

53

No Linux, você pode encontrar o valor máximo de PID para o seu sistema com isto:

$ cat /proc/sys/kernel/pid_max

Este valor também pode ser escrito usando o mesmo arquivo, no entanto, o valor só pode ser estendido até um máximo teórico de 32768 para sistemas de 32 bits ou 4194304 para 64 bits:

$ echo 32768 > /proc/sys/kernel/pid_max

Parece ser prática normativa na maioria dos sistemas de 64 bits definir esse valor com o mesmo valor encontrado em sistemas de 32 bits, mas isso é por convenção, e não por um requisito.

Em man 5 proc :

/proc/sys/kernel/pid_max  
  This file (new in Linux 2.5) specifies the value at which PIDs wrap around
  (i.e., the value in this file is one greater than the maximum PID). The
  default value for this file, 32768, results in the same range of PIDs as
  on earlier kernels. On 32-bit platfroms, 32768 is the maximum value for
  pid_max. On 64-bit systems, pid_max can be set to any value up to 2^22
  (PID_MAX_LIMIT, approximately 4 million).

E não, você não pode alterar o PID de um processo em execução. Ele é atribuído como um número seqüencial pelo kernel no momento em que o processo é iniciado e é o identificador a partir desse momento. A única coisa que você poderia fazer para obter um novo é fazer com que o código bifurque um novo processo e termine o antigo.

    
por 18.07.2011 / 15:09
7

Outras respostas explicaram

  • /proc/sys/kernel/pid_max para Linux e
  • 99999 para o FreeBSD

Mas a pergunta não especificou um sistema operacional. Então, aqui estão alguns outros:

  • No Solaris, o valor máximo de um ID de processo é um parâmetro ajustável do kernel - pidmax em /etc/system - o padrão é 30.000 e pode ser definido entre 266 e 999.999. Note que isto não é max_nprocs , que é um parâmetro ajustável do kernel com uma função sutilmente diferente.
  • No HP-UX 10, os ajustáveis do kernel denominados process_id_min e process_id_max prescrevem o intervalo de IDs de processo permitidos.
  • No AIX, os IDs de processo compreendem vários campos, incluindo um campo "process slot" e um campo "generation count". O valor máximo possível é 0x03FFFFFE, porque os campos ocupam apenas os 26 bits inferiores de um inteiro, e o bit # 0 é sempre zero, exceto para o processo # 1.
  • No OpenBSD, o máximo é 32766.
  • No NetBSD, o máximo é 30000.
por 14.10.2016 / 21:50
3

No FreeBSD, o valor do PID é entre 0 e 99999, de acordo com intro(2) (link) . Aqui está uma citação do manual:

Process ID.
Each active process in the system is uniquely identified by a non-negative integer called a process ID. The range of this ID is from 0 to 99999.

Se você quiser ler o código-fonte, então PID_MAX é definido em sys/sys/proc.h (link) .

    
por 13.08.2016 / 14:10

Tags