Capítulo 2.5 - Gestión de Procesos
Objetivos de Aprendizaje
Al final de este capítulo, usted será capaz de:
- Comprender cómo Linux gestiona los procesos
- Explicar los estados de los procesos
- Comprender la planificación (scheduling)
- Identificar las prioridades y los valores nice
¿Qué es un Proceso?
Un proceso es una instancia de un programa en ejecución. Cada proceso tiene:
- Un PID (Process ID) único
- Un PPID (Parent Process ID)
- Su propio espacio de memoria
- Archivos abiertos
- Recursos del sistema
Estados de los Procesos
Un proceso puede estar en diferentes estados:
Estados:
- Running (R): En ejecución o listo
- Sleeping (S): En espera de un evento
- Stopped (T): Suspendido (Ctrl+Z)
- Zombie (Z): Terminado pero no limpiado
- Uninterruptible (D): En espera de I/O de disco
Planificación de Procesos
El scheduler de Linux (CFS - Completely Fair Scheduler) decide qué proceso ejecutar:
Criterios de planificación:
- Prioridad (valor nice)
- Tiempo de CPU utilizado
- Tiempo de espera
- Afinidad de CPU
Prioridades y Valores Nice
La prioridad de un proceso determina su acceso a la CPU:
Valores nice:
- -20 a +19 (más bajo = más prioritario)
- 0: Prioridad por defecto
- -20: Prioridad alta (solo root)
- +19: Prioridad muy baja
# Ver la prioridad
ps -o pid,ni,comm
# Cambiar la prioridad al iniciar
nice -n 10 comando
# Cambiar la prioridad de un proceso existente
renice 10 PID
# Proceso en tiempo real (root)
chrt -f 50 comando
Jerarquía de Procesos
Los procesos forman una jerarquía (árbol):
Características:
- El proceso padre puede crear hijos (fork)
- Si el padre muere, los hijos se vuelven huérfanos (adoptados por init)
- Proceso zombie si el padre no recupera el estado
Comandos de Gestión
# Ver los procesos
ps aux
top
htop
# Matar un proceso
kill PID
kill -9 PID # Forzar
killall nombre_proceso
# Suspender/Reanudar
kill -STOP PID
kill -CONT PID
# Ver el árbol de procesos
pstree
ps auxf
Comunicación entre Procesos
Los procesos pueden comunicarse mediante:
- Señales: kill, SIGTERM, SIGKILL
- Pipes:
|(línea de comandos) - Sockets: Comunicación de red
- Archivos compartidos: Memoria compartida
- Message queues: IPC System V
Resumen
En este capítulo, usted ha aprendido:
Proceso: Instancia de un programa en ejecución
Estados: Running, Sleeping, Stopped, Zombie
Scheduler: CFS planifica la ejecución de los procesos
Prioridades: Valores nice de -20 a +19
Jerarquía: Árbol con init como raíz
Gestión: ps, top, kill, nice, renice
Próximos Pasos
Capítulo 2.6: Procesos Init y systemd
Capítulo 2.7: Servicios y Demonio
Capítulo creado el: Diciembre 2024