Planificación del procesador

Clase 3 · Prioridad, progreso y decisiones adaptativas

¿cómo puede el sistema atender primero lo urgente sin dejar a nadie esperando para siempre?

Sistemas Operativos

Hoy: el planificador debe reconocer que los procesos tienen necesidades distintas y cambiar su decisión cuando la experiencia muestra que una regla está fallando.

El camino recorrido

Política Pregunta que responde Riesgo que deja abierto
FCFS ¿Quién llegó primero? Un trabajo largo puede retrasar a todos.
SJF / SRTF ¿Quién tiene menos CPU por delante? Hace falta conocer o estimar la ráfaga.
Round Robin ¿Cómo repartimos turnos? Los cambios y el tamaño de q importan.

Ahora agregamos tres preguntas:

  • ¿hay procesos que merecen atención diferenciada?
  • ¿cómo garantizamos progreso?
  • ¿podemos adaptar la política al comportamiento observado?

Una nueva dificultad: el planificador no conoce el futuro

No se sabe con certeza cuánto CPU necesitará un proceso

  • T, ejecuta ráfagas breves y espera una respuesta rápida
  • C, necesita mucha CPU continua.
  • B, alterna CPU y E/S.

Al comienzo, los tres parecen simplemente procesos listos. La diferencia se revela mientras ejecutan.

¿Cómo puede el sistema favorecer una respuesta rápida sin postergar indefinidamente los trabajos largos?

Prioridad y progreso

Sistemas Operativos

¿quién debe avanzar primero?

Primera aproximación · Prioridad fija

Una política de prioridad asigna a cada proceso un nivel. En cada decisión:

  1. se consideran solo los procesos listos;
  2. se elige el de mayor prioridad efectiva;
  3. se aplica la regla de desempate declarada.

En nuestro convenio, un número menor significa una prioridad mayor. Un proceso bloqueado no compite, aunque tenga la prioridad más alta.

La prioridad no es una única política

La misma prioridad puede combinarse con decisiones distintas:

Variante ¿Cuándo se revisa la prioridad? ¿Puede desalojar?
Prioridad no apropiativa Cuando termina o se bloquea el proceso actual. No.
Prioridad apropiativa También cuando llega un proceso de mayor prioridad. Sí.

Para reproducir una traza debemos declarar además:

  • si el número bajo representa prioridad alta;
  • qué ocurre en un empate;
  • si la prioridad es fija o puede cambiar;
  • qué evento provoca una nueva decisión.

El problema que aparece · Inanición

Supongamos que un proceso L está listo con prioridad baja. Una corriente de procesos de prioridad alta llega antes de que L pueda ejecutar.

Si siempre aparece alguien favorecido por la regla, L puede permanecer listo durante un tiempo sin cota conocida.

Eso es inanición (starvation):

el proceso sigue siendo elegible, pero la política lo posterga repetidamente.

No es lo mismo que interbloqueo: en la inanición el proceso espera una decisión de CPU; en el interbloqueo los procesos esperan recursos que forman un ciclo.

Envejecimiento · Convertir espera en oportunidad

El envejecimiento modifica gradualmente la prioridad efectiva de un proceso mientras espera.

Una especificación posible es:

donde W(t) es el tiempo acumulado en la cola de listos y a es la tasa de envejecimiento.

La fórmula no es universal. Una política reproducible debe indicar:

  • cuándo se actualiza W;
  • cuánto vale a;
  • cuál es el límite de prioridad;
  • cómo se resuelven los empates.
P_efectiva(t) = max(P_min, P_base − a · W(t))
  • \(P_{\text{efectiva}}(t)\): prioridad que se usa en ese instante;
  • \(P_{\min}\): límite mínimo permitido;
  • \(P_{\text{base}}\): prioridad inicial;
  • \(a\): velocidad del envejecimiento;
  • \(W(t)\): tiempo que el proceso lleva esperando en la cola de listos.

La prioridad efectiva en el instante t es el máximo entre la prioridad mínima y la prioridad base menos a por el tiempo de espera acumulado.

  • P_base = 10
  • P_min = 1
  • a = 0,25

WA · E6 · Prioridad, inanición y envejecimiento

⏸ Pausa de trabajo en clase · 20 minutos

Abrir E6 en WA y seguir la consigna completa allí. Registren la traza, la regla de selección y una justificación breve del progreso o la postergación.

Prioridad y recursos compartidos

Sistemas Operativos

¿qué ocurre cuándo interviene un mutex?

Cuando la prioridad se cruza con un mutex

Hay otro modo de que una prioridad deje de reflejar la urgencia:

  1. L, de prioridad baja, posee un mutex.
  2. H, de prioridad alta, necesita ese mutex y queda bloqueado.
  3. M, de prioridad media, está listo y ocupa la CPU.

Aunque H sea el proceso más urgente, L no puede ejecutar para liberar el mutex porque M lo desplaza. El orden efectivo queda invertido.

Se produce la Inversión de la prioridad!

Herencia de prioridad · Una ayuda temporal

Con herencia de prioridad, cuando H se bloquea esperando a L:

  • L recibe temporalmente la prioridad de H;
  • el planificador puede elegir L por encima de M;
  • L ejecuta hasta liberar el mutex;
  • después recupera su prioridad original.

La herencia reduce la demora causada por la inversión. No reemplaza una disciplina de adquisición de recursos y no demuestra por sí sola que no exista interbloqueo.

MLFQ y reglamentación

Sistemas Operativos

¿cómo aprende la política del comportamiento?

¿Por qué cambiar de cola?

Al comenzar un proceso, el sistema no conoce con certeza su próxima ráfaga. Puede aprender de sus eventos:

  • quien consume un quantum completo parece intensivo en CPU;
  • quien se bloquea pronto suele alternar CPU y E/S;
  • quien termina rápido necesita una respuesta temprana;
  • quien espera demasiado necesita una oportunidad explícita.

La realimentación convierte esas observaciones en movimientos de prioridad. La política deja de ser una etiqueta permanente y pasa a ser una hipótesis que se revisa.

Colas multinivel: dos ideas 

Multilevel Queue (MLQ): cada proceso se asigna a una cola y permanece allí. Las colas pueden representar clases de servicio diferentes.

Multilevel Feedback Queue (MLFQ): el proceso puede subir o bajar según el comportamiento observado y las reglas de la política.

En ambos casos hay varias colas. La diferencia central es si la pertenencia puede cambiar.

Anatomía de una MLFQ

Una MLFQ concreta debe declarar, como mínimo:

  1. cuántas colas existen y cuál tiene mayor prioridad;
  2. qué política se usa dentro de cada cola;
  3. qué quantum corresponde a cada nivel;
  4. cuándo se desciende y cuándo se asciende;
  5. si una llegada a una cola superior desaloja a la inferior;
  6. cómo se previene la inanición.

Una configuración frecuente es usar:

  • RR con quantum pequeños arriba
  • quantum mayores, o FCFS, abajo.

Es una familia de diseños, no una receta única.

Cómo se mueve un proceso

Una variante típica puede seguir esta historia:

  1. un proceso nuevo entra en la cola superior;
  2. si consume todo su quantum, desciende;
  3. si se bloquea antes, puede conservar su nivel o ascender según la variante;
  4. una cola inferior solo ejecuta cuando las superiores están vacías, salvo que la política diga otra cosa;
  5. un ascenso periódico devuelve oportunidades a los procesos que llevan mucho tiempo esperando.

Cada paso es una decisión de diseño. Por eso una respuesta correcta siempre debe escribir las reglas antes de dibujar el Gantt.

WA · E7 · Traza de MLFQ

⏸ Pausa de trabajo en clase · 10 minutos

Abrir E7 en WA. Produzcan la traza con las colas y anoten el motivo de cada movimiento.

Al final, propongan en una frase una regla de ascenso que pueda evitar la espera indefinida en una cola inferior.

Progreso · La política necesita una salida

Una política puede ser rápida para algunos procesos y aun así ser incorrecta como política general si no garantiza progreso.

Para evaluar una regla de ascenso, preguntar:

  • ¿todo proceso listo obtiene CPU en tiempo finito?
  • ¿qué cantidad de espera dispara el ascenso?
  • ¿cuánta respuesta se gana y qué coste se agrega?
  • ¿el ascenso puede producir oscilaciones entre colas?

La palabra justa debe traducirse en una propiedad observable.

CPU, E/S y espera

Sistemas Operativos

¿toda espera significa lo mismo?

CPU y E/S · Dos formas de esperar

Un proceso puede estar:

Estado Espera por ¿Compite por la CPU?
Listo una oportunidad de ejecución Sí
Ejecutando completar su ráfaga actual Ya la tiene
Bloqueado terminar una E/S u otro evento No

El retorno incluye el tiempo total desde la llegada hasta el fin, incluso los bloqueos. La espera de CPU cuenta el tiempo en listo; el tiempo bloqueado explica otra parte de la historia.

WA · E8 · CPU, E/S y espera

⏸ Pausa de trabajo en clase · 15 minutos en dos bloques

Abrir E8 en WA. Dibujen las líneas de CPU y E/S, marquen los períodos listo y bloqueado y calculen las métricas solicitadas.

La actividad comienza ahora y vamos a avanzar un poco más en el tema...

Elegir y experimentar

Sistemas Operativos

¿qué muestra una carga concreta?

De las reglas a la evidencia

Una política no se evalúa solo por su nombre. Se evalúa con una carga concreta y una pregunta concreta.

Antes de ejecutar, declarar:

  • qué escenario se quiere favorecer;
  • qué procesos llegan y qué ráfagas tienen;
  • qué convenciones se usarán;
  • qué métricas se observarán.

Después, comparar al menos dos políticas y buscar también quién queda perjudicado.

WA · E9 · Elegir, experimentar y recomendar

⏸ Pausa de trabajo en clase · 25 minutos

Abrir E9 en WA. Elijan un escenario, una carga pequeña y dos políticas. Predigan una diferencia, ejecútenla con Python y comparen respuesta media y retorno medio.

Entreguen una recomendación breve que incluya:

  • objetivo y carga elegidos;
  • resultados observados;
  • un proceso favorecido y uno perjudicado;
  • el compromiso aceptado;
  • una condición que haría cambiar la decisión.

Simulador · Contrastar una comparación

El simulador permite reproducir políticas de CPU sobre un CSV con columnas
id,llegada,rafaga,prioridad.

python3 simulador.py --archivo carga.csv --algoritmo FCFS
python3 simulador.py --archivo carga.csv --algoritmo RR --quantum 2
python3 simulador.py --archivo carga.csv --comparar

La salida ayuda a revisar la traza, las métricas por proceso, los promedios, los cambios entre procesos, la utilización y la productividad.

Implementa FCFS, SJF, SRTF, Round Robin y prioridad fija. No implementa E/S, envejecimiento, MLFQ, costes de cambio ni múltiples núcleos: E6, E7 y E8 se razonan con sus modelos propios.

Justificar una recomendación

Sistemas Operativos

¿qué política podemos definir con fundamento?

¿Qué política podemos justificar?

Una recomendación defendible relaciona cuatro elementos:

  1. Objetivo: qué experiencia o propiedad queremos favorecer.
  2. Evidencia: qué muestran la traza y las métricas de la carga.
  3. Compromiso: qué proceso o métrica puede empeorar.
  4. Condición: qué cambio en la carga haría revisar la decisión.

La respuesta a la pregunta guía no es un nombre de algoritmo. Es una explicación de cómo combinar reglas, sincronización y planificación para administrar la CPU con eficiencia y progreso.

WA · Quiz 3 · Comprobación formativa

Resolver en WA las preguntas seleccionadas del cuestionario de cierre.

Usen la retroalimentación para anotar un concepto que todavía necesite revisión.

Cierre · Volver a la pregunta guía

El planificador administra una historia que cambia:

  • observa qué procesos están listos;
  • aplica una regla explícita;
  • revisa la decisión cuando cambia el estado;
  • protege el progreso y controla sus costes.

No existe una política mejor para toda carga. Existe una política defendible cuando sus reglas, objetivos y consecuencias están claros.

Para seguir leyendo

La MLFQ suele presentarse como una familia de políticas con varias colas, quanta por nivel, movimientos según el uso de CPU y mecanismos de ascenso para evitar inanición. La configuración concreta debe declarar sus reglas y sus prioridades.

Referencia de consulta: MLFQ · CPU Scheduling