Problema de los LectoresEscritores - PowerPoint PPT Presentation

1 / 7
About This Presentation
Title:

Problema de los LectoresEscritores

Description:

Varios lectores pueden acceder a la vez. ... Espera permiso para escribir. Escribe en la BD. Notifica fin de escritura. end loop; ... – PowerPoint PPT presentation

Number of Views:20
Avg rating:3.0/5.0
Slides: 8
Provided by: JRR1
Category:

less

Transcript and Presenter's Notes

Title: Problema de los LectoresEscritores


1
Problema de los Lectores/Escritores
  • Dos tipos de tareas necesitan acceder a una BD.
  • Problema de exclusión parcial
  • Varios lectores pueden acceder a la vez.
  • Si un escritor está accediendo, nadie más puede
    acceder a la BD.

2
Refinamiento de las operaciones de alto nivel
task body TipoEscritor is begin loop Espera
permiso para escribir Escribe en la BD Notifica
fin de escritura end loop end TipoLector
  • task body TipoLector is
  • begin
  • loop
  • Espera permiso para leer
  • Lee la BD
  • Notifica fin de lectura
  • end loop
  • end TipoLector
  • Operaciones de alto nivel leer, escribir
  • El gestor de sincronización concede permisos y
    recibe notificaciones.
  • El gestor debe saber quién está utilizando la BD.

3
CTADSOL Lectores/Escritores
C-TADSOL Lectores / Escritores OPERACIONES ACCIÓN
ComenzarLectura TipoGestorLEes ACCIÓN
ComenzarEscritura TipoGestorLEes ACCIÓN
TerminarLectura TipoGestorLEes ACCIÓN
TerminarEscritura TipoGestorLEes PROTOCOLOS
Leer ComenzarLectura TerminarLectura Escribir
ComenzarEscritura TerminarEscritura CONCURRENCIA
Leer
SEMÁNTICA DOMINIO TIPO TipoGestorLE
(NLect N x Esc B ) INVARIANTE ?g?TipoGestorLE
(?g.Esc ? NLect 0) INICIAL(g) ?g.Esc ? g.NLect
0
4
C-TADSOL Lectores/Escritores (y ii)
  • CPRE ?g.Esc
  • ComenzarLectura(g)
  • POST gsal gent \ g.NLectsal g.NLectent 1
  • CPRE cierto
  • TerminarLectura(g)
  • POST gsal gent \ g.NLectsal g.NLectent - 1
  • CPRE ?g.Esc ? g.NLect 0
  • ComenzarEscritura(g)
  • POST gsal gent \ gsal.Esc
  • CPRE cierto
  • TerminarEscritura(g)
  • POST gsal gent \ ?gsal.Esc

5
Desarrollo de la abstracción de datos (L/E)
  • task type Gestor_LE is
  • entry Comenzar_Lectura
  • entry Comenzar_Escritura
  • entry Terminar_Lectura
  • entry Terminar_Escritura
  • end Gestor_LE
  • task body Gestor_LE is
  • Num_Lectores Natural 0
  • Escribiendo Boolean False
  • begin
  • ...........
  • end Gestor_LE
  • Operación Comenzar_Lectura
  • Num_Lectores Num_Lectores 1
  • Operación Comenzar_Escritura
  • Escribiendo True
  • Operación Terminar_Escritura
  • Escribiendo False
  • Operación Terminar_Lectura
  • Num_Lectores Num_Lectores - 1

6
Desarrollo de la s. de seguridad
  • Tabla de bloqueos ( objetos protegidos).

task type Gestor_LE is entry
Comenzar_Lectura entry Comenzar_Escritura
entry Terminar_Lectura entry
Terminar_Escritura end Gestor_LE task
body Gestor_LE is Num_Lectores Natural
0 Escribiendo Boolean False
begin loop select when
not Escribiendo gt accept
Comenzar_Lectura do
Num_Lectores Num_Lectores 1
end Comenzar_Lectura
or when Num_Lectores 0 and
not Escribiendo gt accept
Comenzar_Escritura do
Escribiendo True end
Comenzar_Escritura or
when True gt accept
Terminar_Lectura do
Num_Lectores Num_Lectores - 1 end
Terminar_Lectura or
when True gt accept Terminar_Escritura do
Escribiendo False
end Terminar_Escritura
end select end loop end Gestor_LE
7
Desarrollo de la s. de vivacidad
  • Grafo de estados (objetos protegidos)
  • Análisis de vivacidad (conclusiones que con
    objetos protegidos)
  • Para evitar la inanición, introducimos una
    política de turnos ? lecsescs_rv.adb
Write a Comment
User Comments (0)
About PowerShow.com