¿Cómo se numeran los procesos en UNIX?

17

No puedo encontrar ningún patrón cuando miro la numeración de los PID en la tabla de proceso ( ps -a), ya que los PID no son números posteriores y, a veces, hay grandes "espacios" entre esos números. ¿Es porque puede haber algunos procesos que se ejecutan por un corto tiempo y reservan algunos PID? ¿Hay algún rango, después del cual se restablece la numeración de los procesos?

Estoy usando Mac OS X pero supongo que la respuesta debería aplicarse a UNIX en general.

sintagma
fuente

Respuestas:

18

Sí en ambos aspectos.

Muchos procesos son de corta duración. Obtienen un PID, se ejecutan, finalizan y el PID desaparece de la tabla de procesos.

¡Los procesos a veces solo viven por una fracción de segundo!

A menudo, cuando los programas comienzan, ejecutan numerosos comandos como parte de la verificación del sistema e inicialización de su entorno.

El número máximo de PID depende del sistema y a veces es configurable. Básicamente, si sabe que va a tener una gran cantidad de procesos, es posible que deba aumentar la cantidad, pero en los nuevos sistemas operativos, creo que la cantidad máxima suele ser lo suficientemente grande como para la mayoría de las cargas de trabajo.

Los PID son entradas en la tabla de proceso, y cuanto más tenga, más memoria ocupará la tabla de proceso.

Eche un vistazo a esta pregunta relacionada: /server/279178/what-is-the-range-of-a-pid-on-linux-and-solaris

También tenga en cuenta que relacionado con esto está el "número máximo de procesos por usuario", que es una medida para proteger contra un usuario malintencionado que crea intencionalmente muchos procesos para acaparar toda la tabla de procesos.

Johan
fuente
7

También es posible configurar algunos núcleos modernos para asignar PID aleatorios a nuevos procesos para mejorar la seguridad. Al menos Linux y FreeBSD pueden hacerlo con una configuración sysctl, y OpenBSD lo hace siempre. En esos casos, puede decir cada vez menos sobre los esquemas de numeración.

unperson325680
fuente
¿Sabes cuál es el costo de rendimiento, si lo hay, para esto?
Bruce Ediger
@Bruce: el primer parche propuesto tuvo el peor desempeño de O (infty) debido a la aleatorización ingenua. Pero creo que obtuvieron algo seguro y utilizable. No encontré nada muy actual sobre el tema ... creo que no lo usé. :)
unperson325680
55
Los PID aleatorios me suenan a seguridad a través de la oscuridad.
Johan
Eso es lo que es, sobre todo ...
unperson325680
Además de iniciativas individuales, Linux solía proponerlo solo a través del parche de grsecurity , el equipo del kernel de Linux siempre se negó a implementarlo ( ejemplo aquí ) e incluso el equipo de grsecurity finalmente lo abandonó a fines de 2006 .
WhiteWinterWolf