Saltar al contenido principal

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:

  1. Señales: kill, SIGTERM, SIGKILL
  2. Pipes: | (línea de comandos)
  3. Sockets: Comunicación de red
  4. Archivos compartidos: Memoria compartida
  5. 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