RedNotes
Toggle sidebar
Iniciar sesión
Sistemas Operativos/Planificación
Inicia sesión para editar

Cuando varios Sistemas Operativos/Procesos o Sistemas Operativos/Hilos están listos, el planificador (scheduler) decide cuál se ejecuta, usando un algoritmo de planificación.

Comportamiento de los procesos

  • Limitados por CPU (CPU-bound): ráfagas largas de cómputo, poca E/S.
  • Limitados por E/S (I/O-bound): ráfagas cortas de CPU, mucha E/S.

A medida que las CPUs se vuelven más rápidas que los discos, los procesos tienden a ser cada vez más limitados por E/S.

¿Cuándo planificar?

  1. Al crear un proceso.
  2. Al terminar un proceso.
  3. Cuando un proceso se bloquea (E/S, semáforo...).
  4. Al ocurrir una interrupción de E/S.
  5. En cada interrupción de reloj (si es apropiativo).
  • No apropiativo (non-preemptive): el proceso corre hasta que se bloquea o cede la CPU.
  • Apropiativo (preemptive): el proceso corre como máximo un tiempo fijo (quantum).

Metas según el entorno

Todos los sistemas Por lotes Interactivos Tiempo real
Equidad Rendimiento (trabajos/hora) Tiempo de respuesta Cumplir plazos
Aplicar políticas Tiempo de retorno Proporcionalidad Predictibilidad
Balance (todo ocupado) Uso de CPU

Algoritmos para sistemas por lotes

  • FCFS (First-Come, First-Served): una cola FIFO, no apropiativo. Simple, pero un proceso largo retrasa a todos.
  • SJF (Shortest Job First): ejecuta primero el trabajo más corto; óptimo en tiempo de retorno promedio cuando todos están disponibles a la vez.
    • Con trabajos de 8, 4, 4, 4 min: en orden FCFS el retorno promedio es 14 min; con SJF, 11 min.
  • SRTN (Shortest Remaining Time Next): versión apropiativa de SJF.

Algoritmos para sistemas interactivos

  • Round Robin: cada proceso recibe un quantum; al agotarse, va al final de la cola. Un quantum muy corto genera demasiados cambios de contexto; uno muy largo empeora la respuesta. Un valor razonable es 20–50 ms.
  • Por prioridad: se ejecuta el proceso listo con mayor prioridad. Riesgo de inanición, mitigado reduciendo la prioridad con el tiempo (aging). Asignar prioridad 1/f (f = fracción del quantum usada) favorece a procesos de E/S.
  • Múltiples colas: clases de prioridad con quantums crecientes (CTSS).
  • Proceso más corto a continuación: estimación por envejecimiento: T = a·T₀ + (1−a)·T₁.
  • Planificación garantizada: con n procesos, cada uno recibe 1/n de la CPU.
  • Por lotería: cada proceso tiene boletos; se sortea uno en cada decisión. Simple y proporcional.
  • Por partes equitativas (fair-share): reparte la CPU por usuario, no por proceso.

Sistemas de tiempo real

  • Duro (hard): los plazos son absolutos. Suave (soft): fallar ocasionalmente es tolerable.
  • Con m eventos periódicos, cada uno con periodo Pᵢ y CPU Cᵢ, el sistema es planificable si: Σ Cᵢ / Pᵢ ≤ 1.

Política vs mecanismo

El kernel ofrece el mecanismo (p. ej. prioridades); el proceso padre o el usuario puede fijar la política.

Planificación de hilos

Con hilos de usuario, el kernel elige el proceso y la biblioteca el hilo. Con hilos de kernel, el kernel elige directamente el hilo, a mayor coste de cambio de contexto pero con la ventaja de que un hilo bloqueado no detiene al proceso.

En la práctica

Linux usa CFS (Completely Fair Scheduler), un árbol rojo-negro ordenado por tiempo de CPU virtual (y desde 6.6, EEVDF). Windows usa 32 niveles de prioridad con aumentos dinámicos.

#sistemas-operativos #tanenbaum #planificacion