Académique Documents
Professionnel Documents
Culture Documents
UPM
Planificacin de tareas de
tiempo real
Juan Antonio de la Puente
DIT/UPM
Objetivos
2/10/07
Planificacin de tareas
2/10/07
Planificacin de tareas
2/10/07
inactiva
Planificacin de tareas
Concurrencia
Los sistemas de tiempo real controlan actividades del mundo
exterior que son simultneas
Para ello deben ejecutar varias tareas en paralelo
(concurrentemente)
La ejecucin de las tareas se multiplexa en el tiempo en uno o
varios procesadores
activa
A
ejecutndose
inactiva
B
C
2/10/07
Planificacin de tareas
Requisitos temporales
Los requisitos de tiempo real se refieren a
2/10/07
Planificacin de tareas
T (perodo)
D (plazo)
Tarea peridica
T
D
fallo
T (separacin)
Tarea espordica
D (plazo)
D
t
2/10/07
Planificacin de tareas
Planificacin de tareas
2/10/07
Planificacin de tareas
Planificacin de tareas
2/10/07
Planificacin de tareas
Esquemas de planificacin
2/10/07
Planificacin de tareas
2/10/07
Planificacin de tareas
10
2/10/07
Planificacin de tareas
11
Modelos de tareas
Ejemplos:
2/10/07
Planificacin de tareas
12
Planificacin esttica
2/10/07
Planificacin de tareas
13
2/10/07
Planificacin de tareas
14
Arquitectura sncrona
reloj
ejecutivo
cclico
tarea 1
2/10/07
tarea 2
Planificacin de tareas
tarea 3
15
Parmetros temporales
T
C
D
es la fase
es el perodo de activacin de la tarea
es su tiempo de cmputo en el peor caso
es el plazo de respuesta relativo a la activacin
T
T
D
C
0
2/10/07
Planificacin de tareas
16
Hiperperodo
T1
1
T2
2/10/07
Planificacin de tareas
17
Planificacin esttica
2/10/07
Planificacin de tareas
18
Ejemplo 1
20 ms
40 ms
ciclo secundario
ciclo secundario
ciclo secundario
A
0
2/10/07
ciclo principal
B
10
A
20
A
30
40
B
50
Planificacin de tareas
A
60
70
80
19
Ejecutivo cclico
procedure Cyclic_Executive is
type Frame is mod 2;
Index :Frame := 0;
begin
Set_Timer (Periodic, 0.020);
loop
Wait_Clock_Interrupt; -- cada 20ms
case Index is
when 0 => A; B;
when 1 => A;
end case;
Index := Index + 1;
end loop;
end Cyclic_Executive;
2/10/07
Planificacin de tareas
20
Plazos de respuesta
T = 20 ms
T = 40 ms
A,B
DA
A
0
2/10/07
B
10
D = 20 ms
D = 40 ms
C = 8 ms
C = 12 ms
DA
DB
A
20
30
Planificacin de tareas
40
21
Factor de utilizacin
N
La cantidad U =
i =1
Ci
Ti
2/10/07
Planificacin de tareas
22
(1)
Ts ' max Ci
(2) &i : Ti TS $ !Ti Ts " = 0
(3) %i : 2TS $ mcd(TS ,Ti ) # Di
El perodo secundario debe cumplir ciertas condiciones (Baker&Shaw, 1989):
1. Todas las acciones deben caber en un marco
2. El perodo secundario divide al menos al perodo de una tarea
(y por tanto al perodo principal)
3. Entre el instante de activacin y el tiempo lmite de cada accin debe haber al
menos un marco completo (para poder comprobar si la accin termina a
tiempo)
si la accin se activa al comienzo de un marco, basta que TS Di
2/10/07
Planificacin de tareas
23
Condicin (3)
Di
ri,k
t+TS
t+2TS
ri,k + Di
t + 2Ts ! ri ,k + Di
2TS " (ri , j " t )! Di
ri , j " t # mcd (Ti ,TS )
2TS " mcd (Ti ,TS ) ! Di
2/10/07
Planificacin de tareas
24
Ejemplo 2
Tarea
T1
T2
T3
T4
C
10
18
10
20
U = 0,76
TM = 200
2/10/07
T
D
40 40
50 50
200 200
200 200
1) TS $ 20
2) TS # {20,25,40,50,100,200}
3 ) 2TS " mcd(TS ,40 ) ! 40
2TS " mcd(TS ,50 ) ! 50
2TS " mcd(TS ,200 ) ! 200
TS = 20
Planificacin de tareas
25
T4
T3
T2
T1
T1 T3
0
2/10/07
20
T2
T1
40
T4
60
T2
80
T1
100
T2
120
Planificacin de tareas
T1
140
T1
160
T2
180
200
26
Tareas espordicas
TP
TS
A
suceso
2/10/07
Planificacin de tareas
27
procedure Polling_Server is
Event_Occurred : Boolean := False;
begin
-- invocado peridicamente por el ejecutivo cclico
Check (Event_Occurred);
if Event_Occurred then
Sporadic_Activity;
end if;
end Polling_Server;
2/10/07
Planificacin de tareas
28
Recursos compartidos
TA
TB
2/10/07
Planificacin de tareas
29
Segmentacin de tareas
2/10/07
Planificacin de tareas
30
Ejemplo 3
Tarea
1) TS $ 50
2) TS # {50,100,200}
3 ) 2TS " mcd (TS ,40 ) ! 40
2TS " mcd (TS ,100 ) ! 100
2TS " mcd (TS ,200 ) ! 200
10
40
40
20
100
100
50
200
200
U = 0,95
TM = 200
2/10/07
Planificacin de tareas
31
Ejemplo 3 segmentacin
Tarea
10
40
40
20
100
100
3.1
10
200
200
3.2
30
200
200
3.3
10
200
200
(1) TS $ 30
(2) TS # {40,50,100,200}
(3) 2TS " mcd (TS ,40)
! 40
2TS " mcd (Ts ,100 )
! 100
2TS " mcd (Ts ,200 )
! 200
2/10/07
3.1 1
40
3.2
1 3.3
80
1
120
Planificacin de tareas
1
160
200
32
procedure Cyclic_Executive is
type Frame is mod 5;
Index :Frame := 0;
begin
loop
Wait_clock_Interrupt; -- cada 40ms
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;
2/10/07
Planificacin de tareas
33
Problemas de la segmentacin
2/10/07
Planificacin de tareas
34
2/10/07
Planificacin de tareas
35
Conclusiones
2/10/07
Planificacin de tareas
36