Píldora TAI XCVII; Conceptos Clave en la Gestión de Procesos de Sistemas Operativos

📊 Planificación y Gestión de Procesos en Sistemas Operativos: Guía Completa

En los sistemas operativos modernos, la gestión eficiente de los procesos es fundamental para garantizar un uso óptimo de la CPU, mantener la equidad entre tareas y proporcionar tiempos de respuesta aceptables. En esta entrada exploramos los conceptos clave de planificación de procesos, los algoritmos de planificación y los estados de un proceso, con una visión didáctica y actualizada.


🚀 Objetivo de la planificación de procesos

El objetivo de la planificación de procesos es aprovechar la multiprogramación, manteniendo varios procesos en ejecución para maximizar el uso de la CPU y optimizar el rendimiento general del sistema.

Para ello, el sistema operativo (SO) necesita decidir constantemente qué proceso ejecutar, cuáles suspender o reanudar, y cuándo admitir nuevos procesos o finalizarlos. Estas decisiones las toman diferentes planificadores:

Niveles de planificación

  • 🔷 Planificador a corto plazo (dispatcher o short-term scheduler): Selecciona el proceso que tiene que ejecutarse inmediatamente. Elige entre los procesos en memoria listos para ejecutarse. Puede usar algoritmos apropiativos (interrumpen procesos en ejecución) o no apropiativos.
  • 🔷 Planificador a mediano plazo (medium-term scheduler): Se encarga de suspender temporalmente procesos que están en memoria principal para liberar recursos, y de reanudarlos cuando sea posible (técnica conocida como swapping).
  • 🔷 Planificador a largo plazo (long-term scheduler): Controla la admisión de nuevos procesos al sistema y decide cuándo finalizarlos.

🧮 Criterios y algoritmos de planificación

Para seleccionar el algoritmo más adecuado, el sistema busca:
✅ Maximizar la utilización de la CPU y la tasa de procesamiento.
✅ Minimizar el tiempo de ejecución, de espera y de respuesta.

Algoritmos básicos

  • FCFS (First Come First Served): No apropiativo. Atiende los procesos en orden de llegada. Simple pero puede ser ineficiente si un proceso largo bloquea a los demás.
  • SJF (Shortest Job First): No apropiativo. Ejecuta el proceso con el tiempo de ejecución más corto. Requiere conocer la duración estimada de los procesos.
  • SRPT (Shortest Remaining Processing Time): Apropiativo. Interrumpe un proceso si llega uno con menor tiempo restante.
  • Prioridades: Puede ser apropiativo o cooperativo. Ejecuta el proceso con mayor prioridad. Riesgo: inaniación de procesos con baja prioridad. Solución: envejecimiento.
  • Round Robin (RR): Apropiativo, ideal para sistemas de tiempo compartido. Cada proceso recibe una pequeña porción de tiempo (quantum) antes de pasar al siguiente.
  • Algoritmos híbridos:
    • Round Robin Virtual (VRR): mejora RR creando una cola virtual para procesos bloqueados.
    • Colas múltiples: los procesos se agrupan por características y cada cola puede tener su propio algoritmo.
    • Colas múltiples con realimentación: permite mover procesos entre colas según su comportamiento.

Planificadores en sistemas reales

  • En Windows 2000, las colas múltiples pueden ser fijas o dinámicas, con prioridad que baja cuando el proceso consume mucho CPU.
  • En Linux, los algoritmos típicos incluyen SCHED_FIFO (FCFS), SCHED_RR (Round Robin) y SCHED_OTHER, con políticas específicas para interactivos y en tiempo real.

🔄 Estados de un proceso

Un proceso pasa por diversos estados durante su ciclo de vida:

  • 🆕 Nuevo: está siendo creado.
  • ▶️ En ejecución: las instrucciones se están ejecutando.
  • ⏸️ Bloqueado: espera un evento externo (como operación de E/S).
  • Listo/Preparado: espera que la CPU lo asigne.
  • Terminado: finalizó su ejecución.

Modelo extendido (7 estados)

Para optimizar la memoria principal y permitir swapping, se incluyen estados adicionales como Suspendido/Listo y Suspendido/Bloqueado, cuando los procesos son enviados al almacenamiento secundario mientras esperan.

El swapping consiste en intercambiar procesos entre la memoria principal y el disco para permitir la ejecución de más procesos simultáneamente, aunque con un coste en tiempo de acceso.


🧵 Procesos e hilos

Los procesos pueden dividirse en hilos (threads), que comparten el mismo espacio de memoria del proceso padre pero tienen su propia pila y datos, lo que permite mayor eficiencia.

En Linux, la relación padre-hijo de los procesos se gestiona con las primitivas fork (clona el proceso) y exec (reemplaza el código del proceso hijo con un nuevo programa). El proceso inicial del sistema es PID 0 (swapper), seguido del PID 1 (init).

También existen procesos especiales:

  • 🧟 ZOMBIE: ya finalizó, pero sus recursos aún no fueron liberados.
  • 👤 HUÉRFANO: sigue ejecutándose aunque el padre haya terminado.

📬 Comunicación entre procesos

Los procesos pueden comunicarse mediante:

  • Tuberías (Pipelines): para transmitir datos entre procesos.
  • Mensajes (señales como SIGKILL, SIGTERM, SIGHUP, SIGCHLD): para controlar o notificar eventos entre procesos.

👨‍🎓 Conclusión

La gestión de procesos es uno de los pilares del diseño de sistemas operativos. Comprender los niveles de planificación, los algoritmos más usados y los estados por los que transita un proceso nos permite optimizar el rendimiento de los sistemas y resolver problemas como la inaniación o el bajo rendimiento en entornos altamente concurridos.

Esta guía sintetiza los conceptos fundamentales y presenta las técnicas actuales utilizadas tanto en sistemas propietarios como en Linux, una base indispensable para cualquier profesional en formación o en ejercicio en el área de sistemas y redes.


Si quieres más entradas sobre temas como planificación avanzada, políticas de calidad de servicio o hilos multinúcleo, ¡déjalo en los comentarios y suscríbete al blog para recibir notificaciones!

🖋️ Publicado por Anacrolibrum, 2025

Deja un comentario