Lección 5: ¿Qué es un proceso? /proc y la organización de la memoria
Un proceso es un programa en ejecución — no el archivo binario en disco, sino su instancia viva con memoria, descriptores de archivo y estado. En NVIDIA, toda aplicación CUDA es un proceso con su propio contexto de GPU. Cuando una GPU se cuelga, ps aux | grep cuda encuentra el PID y /proc/<pid>/maps
Un proceso es como un empleado que realiza una tarea: el archivo binario es un currículum escrito en papel, pero el proceso es el empleado real sentado en su escritorio, usando la computadora y comunicándose con otros. /proc es el tablero de gestión que muestra a cada empleado y qué está haciendo.
- Proceso (Process)
- Una instancia en ejecución de un programa. Cada proceso recibe un PID único, un espacio de direcciones separado, descriptores de archivo y estado de CPU propio. Procesos distintos no comparten memoria directamente.
- PID (identificador de proceso)
- Un número entero único que el kernel asigna a cada proceso. El PID 1 siempre es init/systemd. /proc/<pid>/ contiene toda la información sobre un proceso.
- PPID (identificador del proceso padre)
- El PID del proceso padre que creó el proceso actual. Todo proceso es creado por otro proceso (excepto init). PPID=0 indica que el kernel creó el proceso.
- Estado del proceso
- Estado actual de un proceso: R (Running/Runnable — en ejecución), S (Sleeping — esperando I/O), D (Uninterruptible sleep — esperando al kernel), Z (Zombie — terminó pero el padre no hizo la limpieza), T (Stopped — detenido).
- Sistema de archivos /proc
- Un sistema de archivos virtual que el kernel genera en memoria. Cada /proc/<pid>/ es un directorio que contiene información en vivo sobre un proceso: status, maps, fd, cmdline y más.