Planificación de procesos
La planificación de procesos (scheduling) es la forma en que el sistema operativo decide qué proceso o hilo usará la CPU en un momento dado. 👉 Esto es necesario porque normalmente hay más procesos listos para ejecutarse que procesadores disponibles.
1. Objetivos de la planificación #
- Aprovechamiento de CPU: que el procesador esté ocupado el mayor tiempo posible.
- Equidad: repartir los recursos entre los procesos.
- Tiempo de respuesta rápido: especialmente en sistemas interactivos.
- Productividad: completar el mayor número de procesos en el menor tiempo.
- Cumplir prioridades: algunos procesos son más importantes que otros.
2. Tipos de planificación #
-
Planificación a largo plazo
- Decide qué procesos entran en el sistema desde la cola de trabajos.
- Controla la carga global del sistema.
-
Planificación a medio plazo
- Suspende o reactiva procesos para equilibrar el uso de recursos.
- Ejemplo: enviar un proceso al disco (swap) para liberar RAM.
-
Planificación a corto plazo (CPU scheduling)
- Decide qué proceso en estado “Listo” usará la CPU en ese momento.
- Es la más importante para el rendimiento y la multitarea.
3. Algoritmos de planificación (CPU scheduling) #
-
FIFO (First In, First Out) / FCFS
- El primero en llegar es el primero en ejecutarse.
- Justo pero puede causar efecto convoy (un proceso largo retrasa a los cortos).
-
SJF (Shortest Job First)
- Se ejecuta primero el proceso más corto.
- Eficiente, pero difícil saber de antemano la duración real.
-
Round Robin (RR)
- Cada proceso recibe un tiempo fijo (quantum).
- Si no termina, vuelve al final de la cola.
- Muy usado en sistemas de tiempo compartido.
-
Por prioridades
- Cada proceso tiene un nivel de prioridad.
- Los de mayor prioridad se ejecutan antes.
- Problema: inanición de procesos de baja prioridad.
-
Multinivel
- Se combinan colas con diferentes algoritmos según el tipo de proceso.
- Ejemplo: procesos interactivos en Round Robin, procesos largos en FCFS.
4. Ejemplo práctico #
Supongamos que hay tres procesos listos:
-
P1 → necesita 10 ms
-
P2 → necesita 4 ms
-
P3 → necesita 2 ms
-
Con FIFO → P1 se ejecuta completo, luego P2, luego P3 → los cortos esperan demasiado.
-
Con SJF → P3 → P2 → P1 → mejor tiempo de espera promedio.
-
Con Round Robin (quantum = 2 ms) → P1 corre 2 ms, luego P2, luego P3, y así sucesivamente → más justo para usuarios interactivos.
Resumen del tema
Conceptos clave #
- Niveles de Planificación:
- Largo plazo: admisión de trabajos al sistema (degree of multiprogramming).
- Medio plazo: control de swapping y suspensión de procesos en memoria secundaria.
- Corto plazo (CPU Scheduler): selección del siguiente proceso en estado Listo para asignarle la CPU.
- Métricas de Rendimiento: utilización de CPU, rendimiento (throughput), tiempo de retorno (turnaround time), tiempo de espera (waiting time) y tiempo de respuesta (response time).
- Algoritmos Clásicos de Planificación:
- FCFS / FIFO: simple, sin expulsión, vulnerable al efecto convoy.
- SJF (Shortest Job First): óptimo en tiempo medio de espera, pero susceptible a inanición (starvation).
- Round Robin (RR): preventivo por turnos de quantum para sistemas interactivos.
- Colas Multinivel con Retroalimentación (MLFQ): ajuste dinámico de prioridades según el comportamiento del proceso (CPU-bound vs I/O-bound).
Qué debes recordar #
El planificador de CPU equilibra equidad, rendimiento y tiempo de respuesta mediante algoritmos preventivos (Round Robin, MLFQ) o no preventivos (FCFS, SJF).