PDF de programación - Instrumentación de Tiempo Real - Tema 6. Multitarea en Ada

Imágen de pdf Instrumentación de Tiempo Real - Tema 6. Multitarea en Ada

Instrumentación de Tiempo Real - Tema 6. Multitarea en Adagráfica de visualizaciones

Publicado el 14 de Enero del 2017
865 visualizaciones desde el 14 de Enero del 2017
347,5 KB
21 paginas
Creado hace 17a (24/05/2006)
Instrumentación de Tiempo Real

UNIVERSIDAD DE CANTABRIA

Tema 1. Introducción
Tema 2. Recursos de acceso al hardware
Tema 3. Interrupciones
Tema 4. Puertas básicas de entrada/salida (I)
Tema 5. Recursos de temporización de bajo nivel
Tema 6. Multitarea en Ada
Tema 7. Puertas básicas de entrada/salida (II)

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Mario Aldea Rivas

2/Mar/06

1

Necesidad de la concurrencia

UNIVERSIDAD DE CANTABRIA

Muchos problemas se expresan de forma natural mediante
varias actividades concurrentes:
• sistemas de control atendiendo a múltiples subsistemas y

eventos

Control de un automóvil

Medida de
Velocidad

C=4 ms.
T=20 ms.

Control de
Frenos ABS

C=10 ms.
T=40 ms.

Control de
Inyección

C=40 ms.
T=80 ms.

C = Tiempo de ejecución
T = Periodo

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Mario Aldea Rivas

2/Mar/06

2

Solución no concurrente

UNIVERSIDAD DE CANTABRIA

procedure Control_Automóvil is
begin

loop

Medida_De_Velocidad;
Control_De_Frenos_ABS;
Control_De_Inyección_1;
Espera a que Tiempo = 20;
Medida_De_Velocidad;
Control_De_Inyección_2;
Espera a que Tiempo = 40;

Medida_De_Velocidad;
Control_De_Frenos_ABS;
Control_De_Inyección_3;
Espera a que Tiempo = 60;

Medida_De_Velocidad;
Control_De_Inyección_4;
Espera a que Tiempo = 80;

end loop;

end Control_Automóvil;

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Mario Aldea Rivas

2/Mar/06

3

Solución no concurrente:

Problemas y limitaciones

UNIVERSIDAD DE CANTABRIA

Difícil de mantener:
• cualquier cambio en una tarea puede trastocar la

temporización

Difícil de entender
Obliga a partir la tarea Control_De_Inyección en trozos
• en ocasiones no será posible dividir una tarea
Solución más compleja cuando los periodos de las tareas no
son múltiplos

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Mario Aldea Rivas

2/Mar/06

4

Concurrencia no soportada por el
lenguaje

UNIVERSIDAD DE CANTABRIA

procedure Control_Automóvil is

procedure Manejador_Tick is
...
begin
loop
if Han_Pasado_20ms then
Medida_De_Velocidad;
Han_Pasado_20ms:= False;
end if;

if Han_Pasado_40ms then
Control_De_Frenos_ABS;
Han_Pasado_40ms:= False;
end if;
if Han_Pasado_80ms then
Control_De_Inyección;
Han_Pasado_80ms:= False;
end if;
end loop;
end Control_Automóvil;

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Mario Aldea Rivas

2/Mar/06

5

Concurrencia no soportada por el
lenguaje: problemas

UNIVERSIDAD DE CANTABRIA

procedure Control_Automóvil is

procedure Manejador_Tick is
...
begin
loop
if Han_Pasado_20ms then
Medida_De_Velocidad;
Han_Pasado_20ms:= False;
end if;

if Han_Pasado_40ms then
Control_De_Frenos_ABS;
Han_Pasado_40ms:= False;
end if;
if Han_Pasado_80ms then
Control_De_Inyección;
Han_Pasado_80ms:= False;
end if;
end loop;
end Control_Automóvil;

Medida de
Velocidad

C=4 ms.
T=20 ms.

Control de
Frenos ABS

C=10 ms.
T=40 ms.

Control de
Inyección

C=40 ms.
T=80 ms.

¡¡Pérdida de
plazos!!

20

30

40

50

60

70

80

90

100 110 120

130

140

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Mario Aldea Rivas

2/Mar/06

6

Concurrencia en Ada

UNIVERSIDAD DE CANTABRIA

El Ada soporta la programación de procesos concurrentes
mediante las tareas (“tasks”)
Las tareas constan de especificación y cuerpo:
• en el cuerpo define una actividad que se ejecuta

independientemente de las demás tareas

task body Tarea is
declaración de variables;
begin
instrucciones (habitualmente un lazo infinito);
end Tarea;
Las tareas comienzan su ejecución de forma automática

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Mario Aldea Rivas

2/Mar/06

7

Concurrencia en Ada

(cont.)

UNIVERSIDAD DE CANTABRIA

procedure Control_del_Automóvil is
task Medida_Velocidad; -- especificación
task body Medida_Velocidad is -- cuerpo
begin
loop
Acciones de Medida_de_Velocidad;
Esperar al próximo periodo (20 ms);
end loop;
end Medida_Velocidad;
task Control_ABS; -- especificación
task body Control_ABS is -- cuerpo
begin
loop
Acciones de Control_ABS;
Esperar al próximo periodo (40 ms);
end loop;
end Control_ABS;

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Mario Aldea Rivas

2/Mar/06

8

Concurrencia en Ada

(cont.)

UNIVERSIDAD DE CANTABRIA

task Control_Inyeccion;

task body Control_Inyección is
begin

loop

Acciones de Control de Inyección;
Esperar al próximo periodo (80 ms);

end loop;

end Control_Inyección;

begin

null; -- el programa principal es otra tarea

end Control_del_Automovil;

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Mario Aldea Rivas

2/Mar/06

9

UNIVERSIDAD DE CANTABRIA

Concurrencia en Ada:

Ejemplo sencillo

with MaRTE_OS;
with Text_IO; use Text_IO;

procedure Tareas is

task Tarea_1;

task body Tarea_1 is
begin
loop
Put_Line ("Tarea 1");
delay 1.0; -- espera 1 seg
end loop;
end Tarea_1;

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Mario Aldea Rivas

2/Mar/06

10

Concurrencia en Ada:

Ejemplo sencillo

(cont.)

UNIVERSIDAD DE CANTABRIA

task Tarea_2;

task body Tarea_2 is
begin
loop
Put_Line ("Tarea 2");
delay 2.0; -- espera 2 seg
end loop;
end Tarea_2;

begin
loop
Put_Line ("Programa principal");
delay 3.0; -- espera 3 seg
end loop;
end Tareas;

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Mario Aldea Rivas

2/Mar/06

11

Gestión del Tiempo

UNIVERSIDAD DE CANTABRIA

El Ada permite diversas formas de manejo del tiempo:
• Package Ada.Calendar, con funciones para saber la hora,

fecha, etc.

• Package Ada.Real_Time para acceder a un reloj monótono,

que se incrementa siempre

• Instrucciones delay until y delay, que permiten dormir a

una tarea hasta que transcurra el instante o intervalo
indicado
- mientras una tarea está dormida, otras pueden ejecutar

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Mario Aldea Rivas

2/Mar/06

12

Paquete Ada.Calendar

package Ada.Calendar is

UNIVERSIDAD DE CANTABRIA

type Time is private;
subtype Year_Number is Integer range 1901 .. 2099;
subtype Month_Number is Integer range 1 .. 12;
subtype Day_Number is Integer range 1 .. 31;
subtype Day_Duration is Duration range 0.0 .. 86_400.0;

function Clock return Time;
function Year (Date : Time) return Year_Number;
function Month (Date : Time) return Month_Number;
function Day (Date : Time) return Day_Number;
function Seconds (Date : Time) return Day_Duration;

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Mario Aldea Rivas

2/Mar/06

13

Paquete Ada.Calendar

(cont.)

UNIVERSIDAD DE CANTABRIA

function Time_Of
(Year : Year_Number;
Month : Month_Number;
Day : Day_Number;
Seconds : Day_Duration := 0.0)
return Time;

function "+" (Left : Time; Right : Duration)
return Time;
function "+" (Left : Duration; Right : Time)
return Time;
function "-" (Left : Time; Right : Duration)
return Time;
function "-" (Left : Time; Right : Time)
return Duration;
...
end Ada.Calendar;

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Mario Aldea Rivas

2/Mar/06

14

Paquete Ada.Calendar

Ejemplo: mide intervalo

with MaRTE_OS;
with Ada.Calendar, Ada.Text_IO;
use Ada.Calendar, Ada.Text_IO;

procedure Mide_Dif_Tiempo is
T_Ini, T_Fin : Time;
Diferencia : Duration;

UNIVERSIDAD DE CANTABRIA

begin
T_Ini := Clock; -- lee hora de inicio
... -- Código bajo medida
T_Fin := Clock; -- lee hora de finalización

Diferencia := T_Fin - T_Ini; -- calcula la diferencia

Put_Line("Diferencia :" & Duration'Image (Diferencia));
end Mide_Dif_Tiempo;

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Mario Aldea Rivas

2/Mar/06

15

Paquete Ada.Calendar

Ejemplo: lee fecha y hora

with MaRTE_OS;
with Ada.Calendar, Ada.Text_IO;
use Ada.Calendar, Ada.Text_IO;

UNIVERSIDAD DE CANTABRIA

procedure Muestra_Dia_Y_Hora is
Instante : Time := Clock;
Hora : Integer := Integer (Seconds (Instante)) /
3600;
Minuto : Integer := (Integer (Seconds (Instante)) -
Hora*3600) / 60;
begin
Put_Line("Hoy es " & Integer'Image(Day(Instante)) &
" del " & Integer'Image(Month(Instante)) &
" de " & Integer'Image(Year(Instante)));
Put_Line("La hora es : " & Integer'Image(Hora) &
":" & Integer'Image(Minuto));
end Muestra_Dia_Y_Hora;

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Mario Aldea Rivas

2/Mar/06

16

Tareas periódicas

Instrucción "delay until"

UNIVERSIDAD DE CANTABRIA

Con la instrucción delay until es posible hacer tareas
periódicas:

task body Periodica is
Periodo : constant Duration := 0.050; -- en segundos
Proximo_Periodo : Time := Clock;
begin
loop
-- hace cosas
...
Proximo_Periodo := Proximo_Periodo + Periodo;
delay until Proximo_Periodo;
end loop;
end Periodica;

GRUPO DE COMPUTADORES Y TIEMPO REAL
DPTO. DE ELECTRÓNICA Y COMPUTADORES

© Mario Aldea Rivas

2/Mar/06

17

Tareas periódicas

Instrucción "delay"

UNIVERSIDAD DE CANTABRIA

También se puede hacer lo mismo (pero mal) con la orden
delay:
task body Periodica is
Periodo : constant Duration := 0.050; -- en segundos
Proximo_Periodo : Time := Clock;
begin
loop
-- hace cosas
P
  • Links de descarga
http://lwp-l.com/pdf1083

Comentarios de: Instrumentación de Tiempo Real - Tema 6. Multitarea en Ada (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad