ADA: lenguaje de programaci - PowerPoint PPT Presentation

About This Presentation
Title:

ADA: lenguaje de programaci

Description:

Title: ADA: lenguaje de programaci n concurrente Author: Teresa Last modified by: Teresa Created Date: 11/11/2004 11:08:33 AM Document presentation format – PowerPoint PPT presentation

Number of Views:41
Avg rating:3.0/5.0
Slides: 15
Provided by: Teresa
Category:

less

Transcript and Presenter's Notes

Title: ADA: lenguaje de programaci


1
ADA lenguaje de programación concurrente
2
Introducción
  • El desarrollo de ADA ha sido patrocinado por el
    gobierno de los Estados Unidos
  • Estándar en 1983 / orientado a objetos 1995
    (ADA95)
  • Un usuario puede establecer tareas diferentes
  • Cita(Rendezvous) exclusión mutua, sincronización
    y comunicación entre tareas

3
Tareas
  • La especificación describe la interfaz con otras
    tareastask T isend T
  • Si no presenta ninguna interfaz task T
  • En el cuerpo se describe el comportamiento
    dinámicotask body T isend T

4
Ejemplo COMPRA
  • Solución secuencial para comprar CARNE, ENSALADA
    y VINOprocedure COMPRAR isbegin
    COMPRAR_CARNE COMPRAR_ENSALADA
    COMPRAR_VINOend

5
Ejemplo COMPRA (concurrente)
  • Procedure COMPRAR is
  • task OBTENER_ENSALADA
  • task body OBTENER_ENSALADA is
  • begin
  • COMPRAR_ENSALADA
  • end OBTENER_ENSALADA
  • task OBTENER_VINO
  • task body OBTENER_VINO is
  • begin
  • COMPRAR_VINO
  • end OBTENER_VINO
  • begin
  • COMPRAR_CARNE
  • end COMPRAR
  • Una tarea se activa
  • de forma automática
  • al llegar al comienzo
  • del procedimiento.
  • El procedimiento no termina hasta que no
    terminen todas las tareasdependientes de él.

6
La cita
  • La cita entre dos tareas se produce como
    consecuencia de la llamada de una tarea a un
    punto de entrada declarado en otra tarea.
  • Se declara en la especificacióntask T is
    entry E()end
  • Llamada desde otra tareaT.E()
  • No puede tener un resultado

7
La cita sentencia accept
  • Describe el conjunto de sentencias que se
    ejecutan durante la cita
  • Se encuentra en el cuerpo de la tarea donde se
    declaró el punto de entradaaccept E() do
    -- conjunto de sentenciasend E

8
Qué ocurre en la cita?
  • La tarea que llama al punto de entrada no es la
    que ejecuta las sentencias asociadas (las ejecuta
    la tarea a la que pertenece el punto de entrada)
  • No se ejecuta inmediatamentetask body T1
    is task body T2 is accept
    E() do T1.E() end
    E end T2 end T1

9
Buffer de un único elemento
  • Task BUFFERING is
  • entry DEPOSITAR(X in ITEM)
  • entry RETIRAR(X out ITEM)
  • end
  • task body BUFFERING isV ITEM
  • beginloop accept DEPOSITAR(X in ITEM) do
    V X end DEPOSITAR accept
    RETIRAR(X out ITEM) do X V end
    RETIRARend loop
  • end BUFFERING

Llamada BUFFERING.DEPOSITAR() BUFFERING.RETIRAR
()
10
Más sobre puntos de entrada
  • Cada punto de entrada tiene una cola de tareas
    que esperan llamar al punto de entrada.
  • Si hay varias tareas llamando a un punto de
    entrada, éstas serán encoladas.
  • La cola puede estar vacía.
  • Cada ejecución de la sentencia accept retira una
    tarea de la cola.
  • Puede no tener parámetros
  • entry SENYALAR -- declaración
  • T.SENYALAR -- llamada
  • La sentencia accept no necesita tener cuerpo
  • accept SENYALAR
  • Si una tarea llama a uno se sus puntos de
    entrada
  • INTERBLOQUEO

11
Sentencia SELECT
  • loop
  • select accept LEER(X out ITEM)
    do X V end LEER or
  • accept ESCRIBIR(X in ITEM) do
    V X end ESCRIBIR end
    selectend loop
  • end VAR_PROTEGIDA
  • Task VAR_PROTEGIDA is
  • entry LEER(X out ITEM)
  • entry ESCRIBIR(X in ITEM)
  • end
  • task body VAR_PROTEGIDA isV ITEM
  • begin
  • accept ESCRIBIR(X in ITEM) do V
    Xend ESCRIBIR

12
Condiciones de guarda
  • loop
  • select
  • when CUENTAltN gt accept
    DEPOSITAR(X in ITEM) do BUF(ENT) X
    end DEPOSITAR ENT. (ENT1) mod N
    CUENTACUENTA1or when CUENTAgt0 gt
    accept RETIRAR(X out ITEM) do X
    BUF(SAL) end RETIRAR SAL (SAL1)
    mod N CUENTA CUENTA -1 end select
  • end loop
  • end BUFFERING
  • Task BUFFERING is
  • entry DEPOSITAR (X in ITEM)
  • entry RETIRAR (X out ITEM)
  • end
  • task body BUFFERING is
  • N constant 8
  • BUFF array (0..N-1) of ITEM
  • ENT,SAL INTEGER range 0..N-11
  • CUENTA INTEGER range 0..N0
  • begin

13
Más sobre condiciones de guarda
  • Si no existe, la condición del select se
    considera como cierta.
  • Se vuelven a evaluar en cada comienzo del select.
  • No es seguro que se siga cumpliendo cuando se
    produzca la cita (por ejemplo si se utilizan
    variables globales).
  • Se produce un error si ninguna de las guardas es
    correcta.

14
Otras formas de SELECT
  • select
  • llamada / accept
  • else
  • conjunto de sentencias
  • end select
  • select
  • llamada / accept
  • or
  • delay tiempo
  • conjunto de sentencias
  • end select
  • select
  • llamada / accept
  • else
  • delay tiempo
  • conjunto de sentencias
  • end select
Write a Comment
User Comments (0)
About PowerShow.com