17 puntos por GN⁺ 2024-06-08 | 3 comentarios | Compartir por WhatsApp
  • Si buscas PID 0 en la web, la mayoría de la información que aparece es incorrecta.
  • Al buscar PID 0 en Google, Bing, DuckDuckGo y Kagi, fue difícil encontrar una respuesta precisa.
  • La información errónea de Wikipedia se propagó durante 16 años, y muchos sitios la citaron.

Historia de PID 0

  • PID 0 participa en la planificación y la administración de energía, y no tiene relación con la paginación.
  • PID 0 actúa como el planificador que se ejecuta cuando un núcleo de CPU no tiene trabajo que hacer.
  • En los primeros Unix, PID 0 realizaba tareas relacionadas con la administración de memoria, pero en los Unix modernos ya no es así.

El rol real de PID 0

  • PID 0 inicia el kernel y, después, cumple la función de administrar los núcleos de CPU.
  • En el kernel de Linux, PID 0 está implementado con la función do_idle.
  • En otros kernels, como FreeBSD, desempeña un papel similar.

La confusión alrededor de PID 0

  • En el kernel de Linux y en el espacio de usuario, el significado de PID es distinto.
  • En el kernel, task_struct representa un hilo individual, y PID significa ID de hilo.
  • En el espacio de usuario, PID representa un proceso, y esto equivale al ID del grupo de hilos.

PID 0 en sistemas multinúcleo

  • En sistemas multinúcleo, cada núcleo de CPU tiene un hilo idle.
  • Todos esos hilos idle pertenecen al grupo de hilos 0.
  • En el espacio de usuario, esto se reconoce como PID 0.

Conclusión

  • PID 0 existe y es el hilo que inicia el kernel.
  • PID 0 realiza las tareas iniciales de inicialización del kernel y luego pasa a convertirse en el hilo idle.
  • PID 0 no tiene relación con la administración de memoria.
  • En sistemas multinúcleo, cada núcleo tiene un hilo idle, y todos pertenecen al grupo de hilos 0.

Opinión de GN⁺

  • La importancia de la información precisa: la información incorrecta se propagó durante mucho tiempo y llevó a que muchas personas la aceptaran como cierta. Esto vuelve a recordarnos la importancia de ofrecer información precisa.
  • La complejidad del kernel: el proceso de inicialización del kernel y los mecanismos de planificación son muy complejos, y comprenderlos puede ser de gran ayuda para los ingenieros de software.
  • La confusión con PID: como el significado de PID es distinto en el kernel y en el espacio de usuario, es importante entenderlo con claridad.
  • Sistemas multinúcleo: comprender el papel de PID 0 en los sistemas multinúcleo modernos puede ayudar a optimizar el rendimiento del sistema.
  • La influencia de Wikipedia: esto muestra hasta qué punto la información de Wikipedia influye en muchos sitios web. También subraya la importancia de mantener la información correcta y actualizada.

3 comentarios

 
thinkpad 2024-07-17

Me hace recordar aquel viejo incidente cuando ese agent hizo kill -9 0...

 
whizkyu 2024-06-09

Interesante.

 
GN⁺ 2024-06-08
Comentarios en Hacker News
  • Interesante desde una perspectiva arqueológica: “pid 0 es parte del kernel de [Linux]” es útil al depurar el kernel. Desde la perspectiva de los procesos en espacio de usuario, “pid 0 significa uno mismo”.
  • Exceso de confianza en línea: Mucha gente en internet muestra exceso de confianza sobre lo que cree saber. Solo los expertos deberían usar un tono tan categórico.
  • PID 0 en Windows: En Windows basado en NT, PID 0 es “System Idle Process”, similar a Linux. En Windows basado en DOS no existe PID 0, y el idle loop está dentro de VMM32.
  • PID 0 en el Unix académico: En la mayoría de los Unix académicos, PID 0 está relacionado con el subsistema de memoria (paging). Linux no es el único dueño del concepto de PID 0.
  • Errores del conocimiento general: El “conocimiento general” muchas veces está equivocado. La forma correcta es revisar el código fuente del kernel.
  • Un tercer uso de PID 0: En Linux, cuando getppid devuelve 0 es porque el padre está en otro espacio de nombres de PID.
  • Recomendación de material adicional: Si te interesa el arranque temprano del kernel, recomiendan leer este excelente material. Linux Insides
  • Pregunta sobre el comando ps -aux: Si ejecutas el comando “ps -aux”, también se muestra información de otros usuarios. ¿No debería ser información privada por defecto?
  • Uso interesante de kill 0: Comparten un script que usa kill 0 para ejecutar un comando durante un tiempo límite y luego terminarlo.
  • Reutilización de PID 0 en el código v4: Es interesante que el código v4 reutilice pid 0. Hay quien recuerda haber tenido que resolver ese problema en el kernel a mediados de los 80.