Concurrencia en Ada: Objetos protegidos - PowerPoint PPT Presentation

1 / 14
About This Presentation
Title:

Concurrencia en Ada: Objetos protegidos

Description:

Espera condicional mediante barreras (condiciones de entrada a las operaciones) como en las regiones cr ticas ... Excluye a cualquier escritor. entry ... – PowerPoint PPT presentation

Number of Views:186
Avg rating:3.0/5.0
Slides: 15
Provided by: xxx997
Category:

less

Transcript and Presenter's Notes

Title: Concurrencia en Ada: Objetos protegidos


1
Concurrencia en AdaObjetos protegidos
2
Objetos protegidos
  • Tipos abstractos de datos que garantizan acceso
    en exclusión mutua ? monitores
  • Espera condicional mediante barreras (condiciones
    de entrada a las operaciones)? como en las
    regiones críticas condicionales

3
Esquema general de un objeto protegido
protected type OBJETO is function XXX(params)
return tipo procedure YYY(params) entry
ZZZ(params) private --datos privados
--subprogramas privados end OBJETO protected
body OBJETO is -- cuerpos de los subprogramas
-- NO se pueden declarar datos -- (tienen que
ir en el private) end OBJETO
4
Tipos de operaciones
  • procedure
  • Acceso exclusivo de lectura-escritura al objeto
  • function
  • Acceso concurrente de sólo lectura al objeto
  • Excluye a cualquier escritor
  • entry
  • Como el procedure, pero además tiene asociada una
    barrera de entrada (when condición)

5
Barreras de entrada
  • entry E() when condición
  • Entry abierta condición de barrera cierta.
  • Entry cerrada condición de barrera falsa.
  • Una entry sólo se puede ejecutar si está abierta
    y el objeto está disponible.

6
Ejemplo Semáforo (1)
protected type Semaphore (Initial natural) is
entry Wait procedure Signal function Value
return natural private Val natural
Initial end Semaphore
7
Ejemplo Semáforo (2)
procedure Signal is begin Val
Val 1 end Signal function Value return
natural is begin return Val end
Value end Semaphore
protected body Semaphore is entry Wait when
Valgt0 is begin Val Val 1 end wait
8
Acceso a objetos protegidos
Tareas esperando fuera del OP
Tareas esperando en las barreras asociadas a las
entries
Una tarea dentro del OP
entry 1
. . .
entry N
9
Cómo se gestionan las barreras?
  • Para evaluar la barrera, la tarea debe adquirir
    el cerrojo de lectura/escritura del objeto
    protegido.
  • Si la entry está cerrada, la tarea se encola.
  • Cada vez que se finaliza una operación (procedure
    o entry), se reevalúan las condiciones de
    barrera.
  • También se reevalúan las barreras cuando un
    proceso se encola en una entry cerrada.
  • Si tras la reevaluación una o varias entries
    quedan abiertas, se elige una de las tareas de
    esas entries.
  • Elección arbitraria, salvo que se utilice el
    Anexo de Tiempo Real de Ada.

10
Reevaluación inteligente
  • No se tienen por qué reevaluar todas las
    barreras.
  • El compilador sabe qué atributos internos han
    podido cambiar y por tanto puede restringir la
    reevaluación a un conjunto reducido de entries.
  • Esto permite una implementación muy eficiente.

11
Preferencia de las entries
  • La reevaluación de barreras y posterior elección
    de una entry abierta ocurre antes de que se
    libere el objeto protegido.
  • Por tanto, las tareas bloqueadas en entries
    SIEMPRE tienen preferencia sobre las que están
    esperando por primera vez a obtener acceso al
    objeto protegido.
  • Sólo cuando no quedan entries abiertas con
    tareas, se libera el objeto para nuevas tareas.

12
Atributo COUNT
  • ECount ? nos devuelve cuántas tareas están
    bloqueadas en la entry E.
  • Útil para algoritmos que toman decisiones en
    función de la cantidad de procesos que están
    esperando por un recurso.
  • NOTA el uso de COUNT es el motivo por el que se
    reevalúan las barreras cuando una tarea se
    bloquea en una entry

13
Atributo COUNT ejemplo
protected EsperaTres is entry Espera private
SePuedebooleanfalse end EsperaTres
protected body EsperaTres is entry Espera
when EsperaCOUNT3 or SePuede is begin if
EsperaCOUNT 0 then SePuede false
else SePuede true end if end
Espera end EsperaTres
14
Llamadas potencialmente bloqueantes
  • Una operación de un objeto protegido no puede
    realizar llamadas potencialmente bloqueantes
  • delay
  • Llamadas a otros objetos protegidos y tareas
  • Creación o activación de tareas
  • Llamadas a subprogramas que contengan
    instrucciones potencialmente bloqueantes
Write a Comment
User Comments (0)
About PowerShow.com