Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
UPM
Planificación de tareas de
tiempo real
activa
inactiva inactiva
activa ejecutándose
A inactiva
Tarea periódica
T (período) T
D (plazo) D fallo
t
© 2007 Juan Antonio de la Puente
Tarea esporádica
T (separación)
D (plazo) D
t
Planificación de tareas
(rate-monotonic scheduling)
» mayor prioridad a la tarea con período más corto
– sólo tareas periódicas independientes
– tareas periódicas y esporádicas independientes
– tareas con comunicación y sincronización
– tareas estáticas o dinámicas
Empezamos con modelos sencillos
– tareas periódicas independientes
Planificación estática
ejecutivo
cíclico
Φ es la fase
T es el período de activación de la tarea
© 2007 Juan Antonio de la Puente
T T
Φ D D
C
0 t
H H
T1
τ1
T2
τ2
TM = mcm(Ti )
‚ ‚
A B A A B A
0 10 20 30 40 50 60 70 80
procedure Cyclic_Executive is
type Frame is mod 2;
Index :Frame := 0;
begin
Set_Timer (Periodic, 0.020);
loop
© 2007 Juan Antonio de la Puente
Ejemplo:
A: T = 20 ms D = 20 ms C = 8 ms
B: T = 40 ms D = 40 ms C = 12 ms
A,B A
DA DA
DB
A B A
0 10 20 30 40
N
Ci
La cantidad U = !
i =1 Ti
se denomina factor de utilización del procesador
© 2007 Juan Antonio de la Puente
Di
© 2007 Juan Antonio de la Puente
t t+TS t+2TS
ri,k ri,k + Di
t + 2Ts ! ri ,k + Di
2TS " (ri , j " t )! Di
ri , j " t # mcd (Ti ,TS ) Si ri,k = t, basta con que sea
Tarea C T D 1) TS $ 20
T1 10 40 40 2) TS # {20,25,40,50,100,200}
T2 18 50 50 3 ) 2TS " mcd(TS ,40 ) ! 40
© 2007 Juan Antonio de la Puente
T3 10 200 200
2TS " mcd(TS ,50 ) ! 50
T4 20 200 200
2TS " mcd(TS ,200 ) ! 200
U = 0,76
TM = 200 TS = 20
T4
© 2007 Juan Antonio de la Puente
T3
T2
T1
T1 T3 T2 T1 T4 T2 T1 T2 T1 T1 T2
suceso esporádico o no
– el período depende de la separación mínima entre eventos y del
plazo de respuesta
TS TP
A A
suceso
procedure Polling_Server is
Event_Occurred : Boolean := False;
© 2007 Juan Antonio de la Puente
begin
-- invocado periódicamente por el ejecutivo cíclico
Check (Event_Occurred);
if Event_Occurred then
Sporadic_Activity;
end if;
end Polling_Server;
TA TB
A B
Tarea C T D 1) TS $ 50
τ1 10 40 40 2) TS # {50,100,200}
τ2 20 100 100 3 ) 2TS " mcd (TS ,40 ) ! 40
τ3 50 200 200 2TS " mcd (TS ,100 ) ! 100
© 2007 Juan Antonio de la Puente
procedure Cyclic_Executive is
type Frame is mod 5;
Index :Frame := 0;
begin
loop
Wait_clock_Interrupt; -- cada 40ms
© 2007 Juan Antonio de la Puente
case Index is
when 0 => T1; T2; T3_1;
when 1 => T1; T3_2;
when 2 => T1; T3_3;
when 3 => T1; T2;
when 4 => T1;
end case;
end loop;
end Cyclic_Executive;