Pregunta

Tengo una pregunta un tanto tonta, si tengo una serie de procesos que se crean ... estos no son necesariamente algún tipo de herencia, el pid de los procesos tiene que ser números continuos o aleatorios.

¿Fue útil?

Solución

Esto está determinado por el sistema operativo.

En general, generalmente son asignados secuencialmente por el sistema operativo. Sin embargo, este comportamiento no es algo sobre lo que basar las decisiones, ya que la mayoría de las especificaciones del sistema operativo establecen que la asignación de ID de proceso no es determinista (es decir, podría ser aleatoria y podría cambiar en una versión futura, etc.).

Otros consejos

En Linux, los pids generalmente se asignan de forma secuencial a todo el sistema, pero se ajustarán periódicamente, y puede haber "brechas" causadas por otros procesos no relacionados. En un caso extremo, es posible que tenga una "brecha" lo suficientemente ancha como para provocar esta vuelta. Por lo tanto, no asuma ningún pedido en particular; en lugar de eso, haga un seguimiento explícito de los PID de sus procesos primarios o secundarios.

A continuación le indicamos cómo probar lo que hace su sistema:

for i in $(seq 20); do ps; done | grep ps

Los PID de la " ps " los comandos son procesos consecutivos, o casi consecutivos como cualquier otra persona que llama podría esperar poder generar.

Mi terminal cygwin en Windows los asigna al azar, mi servidor web los asigna secuencialmente (con brechas ocasionales que presumiblemente son para procesos ejecutados por otros usuarios o servidores).

Algunos consideran que la asignación de PID secuencial es un posible problema de seguridad, ya que puede filtrar información entre los usuarios de un sistema multiusuario.

En AIX, a menudo verá PID más grandes (por ejemplo, de 7 dígitos) y no se asignan necesariamente de manera semi-secuencial (aunque parecía que había ciclos en incrementos de 2 cuando hice la prueba; había otro usuario en la máquina, así que puede no significar mucho).

Nuevo inicio de sesión en una máquina AIX 5.3:

$ ps
     PID    TTY  TIME CMD
 1060910 pts/27  0:00 -ksh
 1155224 pts/27  0:00 ps
$

Depende de su plataforma, pero no debe depender de ningún orden específico de su pedido.

En Windows, los pid se asignan generalmente en números cada vez mayores, pero a medida que los procesos salen, pueden reciclarse y verá casos en los que un proceso más nuevo tiene un pid más bajo que un proceso más antiguo. Además, pid ha salido del mismo espacio de nombres que tid, por lo que no verás un aumento de pid en 4 a medida que inicies nuevos procesos.

Desde su perspectiva serán aleatorios. El sistema gestiona esos números y los asigna a medida que se crean los procesos. Un vistazo rápido al PID actualmente en mi sistema muestra que todos son divisibles entre 4 ...

Si estás creando esos niños, conocerás el pid, el pid depende del programador del sistema operativo, no te importa esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top