En este algoritmo las tareas periódicas tienen unas prioridades básicas asignadas de acuerdo a un orden fijo. Además, cada tarea periódica tiene una prioridad diferente. Por el contrario, las tareas aperiódicas sin plazo tendrán una prioridad fija, que puede ser la misma en todas ellas.
En este algoritmo existen dos niveles de prioridad para las tareas periódicas: el nivel de prioridades bajas (Low Priority Level, LPL) y el nivel de prioridades altas (High Priority Level, HPL). De esta manera, cada tarea periódica tiene asignados de forma estática una prioridad en cada uno de los dos niveles de prioridades. Estas prioridades se calculan en tiempo de diseño de la forma que se detallará más adelante. Las prioridades iniciales serán alteradas temporalmente por el planificador,
15 Se decidió ponerlas en el anexo porqué es planificación en monoprocesador.
4.2 Algoritmo Dual Priority para Monoprocesadores pudiendo una tarea periódica ser promocionada17 de una prioridad baja a una prioridad superior. Así, en tiempo de ejecución, una tarea periódica empieza con su prioridad más baja hasta que llega su instante de promoción, cuando cambia a su prioridad alta. Este instante de promoción está basado en el cálculo del tiempo peor de respuesta obtenido por las tareas periódicas. Su cálculo se realiza en tiempo de diseño del sistema y también sirve como prueba de planificabilidad (véase el Algoritmo 4-1). Para ello se utiliza el método definido por Joseph y Pandya en [JoP86] (véase la ecuación 2.2). Entonces, el peor tiempo de respuesta es Ri= Ri0=
Win+1, si la iteración converge (Win+1= Win) y se cumple el plazo (Win+1≤ Di).
La promoción relativa de las tareas periódicas se computa de la siguiente forma: Yi= Di – Ri (ecuación 4.1)
Y para la k-ésima activación, la promoción absoluta es:
Yik = k Ti + Di – Ri = k Ti + Yi (ecuación 4.2)
Es decir, una tarea τi activada en el tiempo kTi puede retardar su ejecución a lo sumo
Di – Ri si quiere cumplir con su límite de ejecución. Véase la Figura 4.1 a modo de
resumen ilustrativo.
Tik
Prioridad Baja Prioridad Alta
máximo retraso
Dik Promoción de τik
Yik= Dik - Ri
Figura 4.1: Máximo retraso de una tarea periódica con DP. El color más claro indica la
ejecución de la tarea τik y los más oscuros la interferencia de las tareas más prioritarias.
17 Dudamos entre utilizar los terminología promocionar/promocionado y promover/promovido. Los
primeros términos se utilizan más en entornos comerciales. Los segundos parecen más apropiados y, además, indican movimiento. A pesar de ello, nos sentimos más cómodos con los primeros, sobre todo con el término “instante de promoción”. Según el diccionario de la lengua castellana de la RAE:
Promocionar: Elevar o hacer valer artículos comerciales, cualidades, personas, etc.
Promover: 1. Iniciar o impulsar una cosa o un proceso, procurando su logro. 2. Levantar o elevar a
El rango y orden de las prioridades de bajo nivel no es de vital importancia y puede ser variado a conveniencia. En particular, cualquier servicio que se quiera prestar, como por ejemplo a tareas aperiódicas, podrá tener las prioridades más altas dentro de este nivel bajo. En el caso de las prioridades de nivel alto existen dos restricciones: por un lado, tienen que ser superiores a las del nivel de baja prioridad y por otro, deben tener el mismo orden relativo usado para el cálculo de las promociones, o sea, el orden utilizado en la ecuación 2.2. De esta forma, una tarea periódica puede ser retardada por las tareas aperiódicas, pero una vez promocionada a lo sumo recibirá las interferencias de las tareas periódicas de mayor prioridad previstas de antemano y así podrá terminar antes del vencimiento de su plazo.
Algoritmo Calculo_de_las_Promociones(τ) retorna booleano
1: ordenar las tareas periódicas
2: asignar las prioridades de acuerdo a este orden
3: para cada tarea periódica τi ∈ τ hacer
4: Ri = el peor tiempo de respuesta de τi ;según la ecuación 2.2
5: si Ri > Di entonces
6: retorna falso ; τ no es factible con el orden establecido
7: fin_si
8: Yi = Di – Ri ; anotar la nueva característica (promoción)
9: fin_para
10: retorna cierto
Algoritmo 4-1: Pseudo-código del cálculo de las promociones en tiempo de diseño
En tiempo de diseño se debe utilizar el Algoritmo 4-1 para calcular las promociones de las tareas periódicas y se anotan estos valores como una característica más de las tareas.
En tiempo de ejecución el planificador es guiado por eventos utilizando un temporizador para la promoción de cada tarea periódica. Cuando en un instante t se produce cualquier evento relacionado con la planificación entonces se activa el planificador, el cual aplica el Algoritmo 4-2.
4.2 Algoritmo Dual Priority para Monoprocesadores
Algoritmo Planificador_DP()
Caso que la interrupción es debida a:
a) La activación de alguna tarea periódica: Mover todas las tareas con tiempo de activación menor o igual a t del estado letárgico
al de activación. Para cada una de estas tareas, si Yi=0 la tarea
es encolada en la cola de preparadas de alta prioridad (HPRQ).
Cuando Yi>0 se usa la cola de preparadas de baja prioridad (LPRQ)
y su promoción se calcula como Yik = t + Yi, programando un
temporizador para este tiempo.
b) Un evento externo: mover la correspondiente tarea aperiódica del estado letárgico al estado activo y se encola en la cola de baja prioridad (LPRQ).
c) Una promoción: Todas las tareas periódicas en la cola LPRQ con
Yik ≤ t son promocionadas, es decir, se desencolan de LPRQ, se les
aumenta su nivel de prioridad de LPL a HPL y se encolan en HPRQ. Elegir la primera tarea encolada en la cola de mayor prioridad no vacía, si la hubiere (es decir, consultar primero HPRQ y luego LPRQ) Si no el procesador está ocioso o la tarea elegida tiene una prioridad mayor que la tarea ejecutándose entonces mandar ejecutar la tarea elegida.
Esperar una nueva interrupción.
Algoritmo 4-2: Descripción del planificador DP en tiempo de ejecución
4.2.1.2 Análisis del algoritmo DP básico