PDF de programación - Parte I: Programación en Ada - 9. Programación concurrente y de tiempo real

Imágen de pdf Parte I: Programación en Ada - 9. Programación concurrente y de tiempo real

Parte I: Programación en Ada - 9. Programación concurrente y de tiempo realgráfica de visualizaciones

Publicado el 6 de Junio del 2017
1.257 visualizaciones desde el 6 de Junio del 2017
276,8 KB
20 paginas
Creado hace 15a (24/11/2008)
Parte I: Programación en Ada

UNIVERSIDAD DE CANTABRIA

1. Introducción a los computadores y su programación
2. Elementos básicos del lenguaje
3. Modularidad y programación orientada a objetos
4. Estructuras de datos dinámicas
5. Tratamiento de errores
6. Abstracción de tipos mediante unidades genéricas
7. Entrada/salida con ficheros
8. Herencia y polimorfismo
9. Programación concurrente y de tiempo real

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

4

© Javier Gutiérrez, Michael González

24/nov/08

1

Notas:

UNIVERSIDAD DE CANTABRIA

9. Programación concurrente y de tiempo real

• Concurrencia
• Sincronización de espera
• Sincronización de datos
• Programación de tiempo real
• Representación del hardware
• Interrupciones
• Gestión del tiempo
• Prioridades

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

24/nov/08

2

9.1. 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

• sistemas multicomputadores o distribuidos
• para el uso concurrente de múltiples recursos

La concurrencia implica prever la sincronización:
• para la utilización de recursos y datos compartidos
• y para el intercambio de eventos e información

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

24/nov/08

3

Notas:

UNIVERSIDAD DE CANTABRIA

Tradicionalmente, existen tres entornos de aplicación en los que se utilizan programas
concurrentes:

• En aplicaciones que interaccionan con o controlan entornos físicos, en los que múltiples
eventos y subsistemas deben ser controlados a la vez. En estos sistemas una solución
concurrente lleva a un mayor grado de modularidad y a un diseño más claro.

• En sistemas multicomputadores o distribuidos, donde el paralelismo físico se puede

aprovechar al máximo ejecutando diferentes tareas en diferentes procesadores.

• En sistemas de cálculo convencional, si se desea utilizar múltiples recursos a la vez. Por

ejemplo, en un sistema de ventanas, puede ser útil asociar tareas a determinadas clases de
ventanas, de forma que puedan ejecutar diferentes actividades concurrentemente.

Los programas concurrentes representan el modelo más natural para resolver muchos problemas
del mundo real que son de naturaleza concurrente.

También se pueden usar (a veces) aproximaciones no concurrentes para la programación de
problemas de naturaleza concurrente, pero el problema es más difícil de abordar y, sobre todo, más
difícil de modificar y extender, tal como se muestra en el ejemplo de control del automóvil que
aparece a continuación.

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

24/nov/08

4

Ejemplo: Control de un
Automóvil

Actividades a controlar:

UNIVERSIDAD DE CANTABRIA

Medida de
Velocidad

C=4 ms.
T=20 ms.
D=5 ms.

Control de
Frenos ABS

C=10 ms.
T=40 ms.
D=40 ms.

Control de
Inyección

C=40 ms.
T=80 ms.
D=80 ms.

C = Tiempo de ejecución
T = Periodo
D = Plazo máximo de
finalización

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

24/nov/08

5

Programación no
Concurrente

UNIVERSIDAD DE CANTABRIA

procedure Control_del_Automóvil is

Tiempo : Integer:=0;

begin

loop

Acciones de Medida_de_Velocidad;
if Tiempo=0 or Tiempo=40 then

Acciones de Control de Frenos ABS;

end if;
if Tiempo=0 then

Primera parte de control de inyección; --(<6 ms)

elsif Tiempo=20 then

elsif Tiempo=40 then

else

Segunda parte de control de inyección; --(<16 ms)

Tercera parte de control de inyección; --(<6 ms)

Cuarta parte de control de inyección; --(<16 ms)

end if;
Espera hasta el próximo periodo; --mediante el reloj

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

24/nov/08

6

Programación no
Concurrente (cont.)

UNIVERSIDAD DE CANTABRIA

Tiempo:=Tiempo+20;
if Tiempo=80 then

Tiempo=0;

end if;
end loop;

end Control_del_Automovil;

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

24/nov/08

7

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:
• la especificación de una tarea declara sus puntos de

entrada (si los hay)

• el cuerpo define una actividad que se ejecuta

independientemente; tiene declaraciones e instrucciones

Las tareas van en la parte de declaraciones de un módulo
• se arrancan nada más ser visibles
• el módulo que las declara no termina si no han terminado

todas sus tareas

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

24/nov/08

8

Programación concurrente

UNIVERSIDAD DE CANTABRIA

procedure Control_del_Automóvil is

task Medida_Velocidad;

task Control_ABS;

task Control_Inyeccion;

task body Medida_Velocidad is
begin

loop

Acciones de Medida_de_Velocidad;
Esperar al próximo periodo (20 ms);

end loop;

end Medida_Velocidad;

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

24/nov/08

9

Programación concurrente
(cont.)

UNIVERSIDAD DE CANTABRIA

task body Control_ABS is is
begin

loop

Acciones de Medida_de_Velocidad;
Esperar al próximo periodo (40 ms);

end loop;

end Control_ABS;

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
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

24/nov/08

10

9.2. Sincronización de espera

UNIVERSIDAD DE CANTABRIA

La sincronización de espera entre tareas en Ada se realiza
mediante el mecanismo del “rendezvous”, o punto de entrada,
o punto de encuentro entre dos tareas
• Hay una tarea que llama, y otra que acepta el encuentro
• En la llamada se pueden pasar parámetros, como en un

procedimiento

• La tarea que “llama” se queda esperando hasta que la tarea

que acepta la llamada termine de ejecutarla

Los puntos de entrada se declaran en la especificación

En el ejemplo que se muestra a continuación una tarea
(consumidora) debe esperar a un dato que le suministra la
otra tarea (productora)

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

24/nov/08

11

Ejemplo de sincronización de
espera

UNIVERSIDAD DE CANTABRIA

task Consumidor;

task Productor is
entry Espera_Dato(El_dato : out Dato);
end Productor;

task body Consumidor is
Copia_del_dato : Dato;
begin
-- hace cosas
Productor.Espera_Dato(Copia_Del_Dato);
-- hace más cosas
end Consumidor;

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

24/nov/08

12

Ejemplo de sincronización de
espera

UNIVERSIDAD DE CANTABRIA

task body Productor is
Dato_Producido : Dato;
begin
-- calcula valor de Dato_Producido
accept Espera_Dato (El_Dato : out Dato)
do
El_Dato:=Dato_Producido;
end Espera_Dato;
-- hace más cosas
end Productor;

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

24/nov/08

13

9.3. Sincronización de datos

UNIVERSIDAD DE CANTABRIA

La sincronización de datos, para compartir información de
manera mutuamente exclusiva, se realiza mediante objetos
protegidos

El objeto protegido tiene una especificación con:
• parte visible: tiene funciones, procedimientos y puntos de

entrada

• parte privada: contiene los datos protegidos

Con las funciones y procedimientos se garantiza un acceso
mutuamente exclusivo a la información protegida.

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

24/nov/08

14

Ejemplo de sincronización de
datos

UNIVERSIDAD DE CANTABRIA

type Coordenadas is record
X,Y,Z : Float;
end record;

protected Datos_Avion is
function Posicion return Coordenadas;
procedure Cambia_Posicion (La_Posicion : Coordenadas);
private
Posicion_Avion : Coordenadas;
end Datos_Avion;

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

24/nov/08

15

Ejemplo de sincronización de
datos

UNIVERSIDAD DE CANTABRIA

protected body Datos_Avion is

function Posicion return Coordenadas is
begin
return Posicion_Avion;
end Posicion;

procedure Cambia_Posicion (La_Posicion : Coordenadas) is
begin
Posicion_Avion:=La_Posicion;
end Cambia_Posicion;

end Datos_Avion;

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

24/nov/08

16

Puntos de entrada en objetos
protegidos

UNIVERSIDAD DE CANTABRIA

Los puntos de entrada proporcionan la misma protección que
los procedimientos protegidos, pero además:
• permiten a una tarea esperar, hasta que se cumpla una

determinada condición

• la evaluación de esta condición también está protegida

El ejemplo que se muestra a continuación implementa una
cola con datos:
• utiliza el tipo abstracto de datos “Cola”
• las operaciones de la cola (Insertar, Extraer, etc.) están

protegidas

• la operación de Extraer hace que la tarea espere hasta que

haya datos disponibles

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Javier Gutiérrez, Michael González

24/nov/08

17

Notas:

UNIVERSIDAD DE CANTABRIA

La sincronización de datos es necesaria para garantizar que la modificación o lectura de datos
compuestos es consistente. Si por ejemplo una tarea está modificando un dato compuesto, y cuando
sólo ha modificado una parte es interrumpida por otra tarea, esta segunda puede leer un dato
inconsistente.

La solución es la sincronización para acceso mutuamente excl
  • Links de descarga
http://lwp-l.com/pdf4330

Comentarios de: Parte I: Programación en Ada - 9. Programación concurrente y de tiempo real (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