Autor: Andrés Roche
Algoritmos de Planificación del Procesador
PLANIFICACIÓN
PARA
WINDOWS
CONCEPTOS
Es fundamental establecer una base conceptual sólida antes de proceder.
ROUND ROBIN (TURNO ROTATORIO)
Este algoritmo está diseñado para sistemas de tiempo compartido y funciona asignando a cada proceso un
pequeño intervalo de tiempo fijo y limitado llamado quantum. La CPU atiende a los procesos en orden
secuencial y, si un proceso no termina su tarea antes de que se agote su quantum, el sistema lo
interrumpe, guarda su estado y lo envía al final de la cola de listos para dar paso al siguiente, garantizando
que ningún proceso monopolice el procesador.
PLANIFICACIÓN POR PRIORIDADES
(PRIORITY SCHEDULING)
En este esquema, a cada proceso se le asigna un número entero que representa su nivel de
importancia. El planificador selecciona siempre el proceso con la prioridad más alta disponible en
la cola de listos para ejecutarlo primero; si el sistema es "expropiativo", puede incluso detener un
proceso en marcha si llega uno nuevo con mayor prioridad, aunque esto conlleva el riesgo de que
los procesos de baja prioridad nunca se ejecuten (inanición) si siempre llegan tareas urgentes.
COLAS MULTINIVEL (MULTILEVEL QUEUE SCHEDULING)
Este método clasifica los procesos en diferentes grupos según su naturaleza (por ejemplo, procesos
interactivos, procesos de sistema o procesos en segundo plano) y crea una cola independiente para
cada grupo. Cada cola tiene su propio algoritmo de planificación (como Round Robin para
interactivos y FCFS para segundo plano) y existe una jerarquía estricta entre ellas, de modo que la
CPU solo atiende a las colas de menor importancia si las colas de mayor prioridad están
totalmente vacías.
PLANIFICACIÓN PARA
WINDOWS
Los subprocesos están programados para ejecutarse según sus prioridad
de programación. A cada hilo se le asigna una prioridad de programación.
Los niveles de prioridad varían de cero (prioridad más baja) a 31
(prioridad más alta). Sólo el hilo de página cero puede tener una
prioridad de cero.
El sistema asigna intervalos de tiempo de forma round-robin a todos
los subprocesos con la máxima prioridad. Si ninguno de estos
subprocesos está listo para ejecutarse, el sistema asigna intervalos de
tiempo de forma de todos contra todos a todos los subprocesos con la
siguiente prioridad más alta.
Si un subproceso de mayor prioridad está disponible para ejecutarse,
el sistema deja de ejecutar el subproceso de menor prioridad (sin
permitirle terminar de usar su segmento de tiempo) y asigna un
segmento de tiempo completo al subproceso de mayor prioridad.
INTERRUPTORES DE CONTEXTO
El programador mantiene colas separadas de subprocesos ejecutables para cada nivel de prioridad. Estos hilos se
conocen como hilos listos. Cuando un procesador está disponible, el sistema realiza un cambio de contexto. Los
pasos en un cambio de contexto son:
1 Guarde el contexto del hilo que el
2 Si el hilo permanece en estado listo,
3 Encuentre la cola de mayor prioridad
4 Elimine el hilo al principio de la cola,
procesador se adelantó o cedió
voluntariamente.
que contiene subprocesos listos.
colóquelo al final de la cola para su nivel
de prioridad.
restaure su contexto y reanude la
ejecución.
IMPULSOS PRIORITARIOS
Cada hilo tiene un prioridad dinámica. Esta es la prioridad que utiliza el programador para determinar qué subproceso ejecutar.
Inicialmente, la prioridad dinámica de un hilo es la misma que su prioridad base. El sistema puede aumentar y reducir la prioridad
dinámica para garantizar que responda y que ningún subproceso se quede sin tiempo de procesador. El sistema no aumenta la
prioridad de los subprocesos con un nivel de prioridad base entre 16 y 31. Sólo los subprocesos con una prioridad base entre 0 y
15 reciben aumentos dinámicos de prioridad.
El sistema aumenta la prioridad dinámica de un hilo para mejorar su capacidad de respuesta de la siguiente manera.
Cuando una ventana recibe entrada,
como mensajes del temporizador,
mensajes del mouse o entrada del
teclado, el programador aumenta la
prioridad del hilo propietario de la
ventana.
Cuando se cumplen las condiciones de
espera para un hilo bloqueado, el
programador aumenta la prioridad del hilo.
Por ejemplo, cuando finaliza una operación
de espera asociada con la E/S del disco o
del teclado, el hilo recibe un aumento de
prioridad.
INVERSIÓN PRIORITARIA
Un fenómeno conocido como inversión prioritaria ocurre cuando un subproceso de alta prioridad se retrasa indefinidamente
mientras se espera un recurso retenido por un subproceso de baja prioridad que no puede continuar debido a la presencia de un
subproceso de prioridad media no relacionado.
Por ejemplo, un subproceso T1 que se ejecuta en la prioridad 4 es reemplazado por un subproceso T2 de mayor prioridad con una
prioridad de 8 después de adquirir un bloqueo. Posteriormente, llega un hilo T3 con una prioridad de 12, adelanta a T2 y se
bloquea intentando adquirir el candado que tiene T1. En este punto, tanto T1 como T2 están listos para ejecutarse, pero como
T2 tiene una prioridad más alta, continúa ejecutándose, impidiendo efectivamente que T3, un subproceso de mayor prioridad,
avance porque T1 no puede ejecutar y liberar el bloqueo.
El programador de subprocesos soluciona este problema mediante una función llamada AutoBoost. AutoBoost rastrea
automáticamente las reservas de recursos y ajusta las prioridades de los subprocesos aplicando pisos de prioridad por debajo de
los cuales un subproceso nunca debe caer. Por ejemplo, si un subproceso de baja prioridad adquiere una sección crítica y un
subproceso de mayor prioridad se bloquea esperando la sección crítica, la prioridad del propietario se eleva a la prioridad máxima
del camarero hasta que libera el recurso.
ESCENARIO
DE EJEMPLO
Un ejemplo de como funcionaria el planificación para Windows.
Prioridad: Cuanto mayor sea el número, mayor es la
prioridad.
Round Robin: Si dos procesos tienen la misma
prioridad, se turnan usando un Quantum (Q) de 2
ms.
Expropiación: Si llega alguien de mayor prioridad,
saca al de menor prioridad (aunque en este ejemplo
simplificado, asumiremos que todos están listos en
el tiempo 0 para ver cómo compiten).
Nuestros datos
Proceso
Tiempo de
Llegada
Tiempo de
Ejecución
(Ráfaga)
Prioridad
P1
0 ms
4 ms
2 (Alta)
P2
0 ms
3 ms
2 (Alta)
P3
0 ms
6 ms
1 (Baja)
PASO A SEGUIR
Tiempo 0: El sistema revisa la prioridad más alta (2). Están P1 y P2.
0ms - 2ms: El sistema elige a P1. Ejecuta 2ms (se acaba su
Quantum). A P1 le faltan 2ms.
2ms - 4ms: Como hay otro proceso de igual prioridad (P2), el
sistema cambia. Ejecuta P2 por 2ms. A P2 le falta 1ms.
Ejecución
P1
4ms - 6ms: Vuelve a P1 (Round Robin). Ejecuta sus 2ms restantes.
P1 Termina.
6ms - 7ms: Queda P2 en la prioridad alta. Ejecuta su 1ms restante.
P2 Termina.
7ms: Ya no hay nadie en Prioridad 2. El sistema baja a Prioridad 1.
Encuentra a P3.
7ms - 13ms: P3 se ejecuta. Como no hay nadie con quien competir
en su nivel ni nadie superior, se ejecuta hasta terminar (o hasta que
se acabe su quantum y vuelva a entrar él mismo).
P2
P3
0
2
4
6
8
10
12
14
RESUMEN
Algoritmo
Ventajas
Desventajas
Eficiencia en tiempo de
ejecución
Recursos necesarios para
su implantación
• Responsividad Extrema:
• Dispatcher Database:
Usa "Boosting" agresivo. Si
Estructura compleja que
mueves el mouse o termina • Impredecible: Debido a
mantiene las 32 colas de
un I/O, el hilo recibe un tantas reglas de boosting y
prioridad.
impulso
de
prioridad decaimiento (decay), es difícil
Muy Alta (O(1)):
inmediato.
saber exactamente cuándo
• Objetos KTHREAD: Cada
correrá un hilo de usuario.
hilo guarda su prioridad
Windows
usa
un
mapa
de
base,
prioridad
actual,
Windows
Scheduling • Quantum Variable: Las
bits
(bitmap)
para
encontrar
quantum restante y máscara
(Prioridades Dinámicas / ventanas en primer plano • No es Hard Real-Time:
la
cola
no
vacía
de
mayor
(Foreground) reciben turnos Aunque tiene prioridades
de afinidad.
Multilevel Feedback Queue)
prioridad
instantáneamente.
más largos (Quantums x3) altas (16-31), interrupciones
No necesita recorrer listas
que las de fondo.
del sistema (SMI, DPC)
• Balance Set Manager: Un
largas.
pueden causar latencias no
hilo
del
sistema
que
• Soporte Híbrido: Maneja aptas para robótica industrial
despierta cada segundo para
bien
tanto
aplicaciones crítica.
buscar hilos hambrientos y
multimedia (Soft Real-Time)
subirles la prioridad (Anticomo tareas generales.
Starvation).
MUCHAS
GRACIAS