• No se han encontrado resultados

Gestores de sincronización

N/A
N/A
Protected

Academic year: 2022

Share "Gestores de sincronización"

Copied!
7
0
0

Texto completo

(1)

Gestores de sincronizaci´ on

Lecturas:

Transparencias y apuntes de la asignatura

Manuel Carro

Universidad Polit´ecnica de Madrid

Este texto se distribuye bajo los t´erminos de la Creative Commons License

M. Carro (UPM) ecnicas O.P. 1 / 20

Gestores de sincronizaci´on

Un caso com´un:

I Exclusi´on mutua demasiado fuerte

I Necesitamos acceso de varios procesos

→ Separar datos fuera recurso

→ Usar recurso s´olo para sincronizar

Tipo Recurso = (Datos : . . . × Gestor : Tipo Gestor ) Usar Gestor s´olo para regular acceso

M. Carro (UPM) ecnicas O.P. 2 / 20

Gestores (Cont.)

Ejemplo de uso:

. . .

Gestor . I n i c i a r O p e r a c i o n X ; . . .

Gestor . T e r m i n a r O p e r a c i o n X ;

Iniciar Operacion Xpuede permitir el paso a varios procesos: uso de datos concurrente

Protocolo suele corresponder a una operaci´on de m´as alto nivel Debe ser encapsulada como tal

Operaci´on protegida debe ser reentrante

(2)

Ejemplo: lectores / escritores

Procesos quieren leer y escribir datos Lectores acceden concurrentemente datos Escritores acceden en exclusi´on mutua:

OPERACIONES

ACCI ´ON Leer: TipoBaseDeDatos . . . ACCI ´ON Escribir: TipoBaseDeDatos . . . SEM´ANTICA

DOMINIO:

TIPO: TipoBaseDeDatos = datos: . . . PROTOCOLOS: Leer

Escribir CONCURRENCIA: Leer Concurrencia: A | A || B | A*

M. Carro (UPM) ecnicas O.P. 4 / 20

Ejemplo: lectores / escritores (Cont.)

Datos siendo le´ıdos/escritos no relevantes: s´olo importa gestor C-TADSOL / recurso no utilizable directamente

Desdoblar:

I Inicio / terminaci´on lectura

I Inicio / terminaci´on escritura Cada una de ellas at´omica

M. Carro (UPM) ecnicas O.P. 5 / 20

Lectores y escritores: seguridad

ACCI ´ON IniciarLectura: TipoGestor[es]

ACCI ´ON TerminarLectura: TipoGestor[es]

ACCI ´ON IniciarEscritura: TipoGestor[es]

ACCI ´ON TerminarEscritura: TipoGestor[es]

PROTOCOLOS: Leer: IniciarLectura ; TerminarLectura Escribir: IniciarEscritura ; TerminarEscritura CONCURRENCIA: Leer*

TIPO: TipoGestor = (nLect: N× nEscrit: N)

INVARIANTE: ∀ g ∈ TipoGestorg.nLect = 0 ∨ g.nEscrit = 0

Gestor . I n i c i a r L e c t u r a ;

<<L e e r>>

Gestor . T e r m i n a r L e c t u r a ;

Gestor . I n i c i a r E s c r i t u r a ;

<<E s c r i b i r>>

Gestor . T e r m i n a r E s c r i t u r a ;

(3)

Lectores y escritores: seguridad (Cont.)

CPRE: g.nEscrit = 0 IniciarLectura (g)

POST: gsal= gent\ gsal.nLect = gent.nLect + 1 CPRE: cierto

TerminarLectura (g)

POST: gsal=gent\ gsal.nLect = gent.nLect - 1 CPRE: g.nLect = 0 ∧ g.nEscrit = 0

IniciarEscritura (g)

POST: gsal=gent\ gsal.nEscrit = gent.nEscrit + 1 CPRE: cierto

TerminarEscritura (g)

POST: gsal=gent\ gsal.nEscrit = gent.nEscrit - 1

N´umero escritores s´olo 0 o 1 → podemos usar un booleano

M. Carro (UPM) ecnicas O.P. 7 / 20

Tablas CPRE/POST

+

Operaci´on CPRE POST+

IniciarLectura ¬Escrib ¬Escrib ∧ nLectent≥ 0

∧nLectsal= nLectent+ 1 IniciarEscritura ¬Escrib ∧

nLect = 0

nLect = 0 ∧Escrib

TerminarLectura cierto nLectsal = nLectent − 1 ∧

¬Escrib

TerminarEscritura cierto ¬Escrib∧ nLect = 0

Leyenda: de invariante , de CPRE , de modo de uso

M. Carro (UPM) ecnicas O.P. 8 / 20

Lectores / escritores: grafo y vivacidad

(0, F) (1, F) . . . (P, F)

Ini.Lec.

Fin.Lec. Fin.Lec. Fin.Lec.

Ini.Lec.

Ini.Lec.

(0, V)

Fin.Esc. Ini.Esc.

N´umero estados infinito (nLect ∈ N)

Pero, en la realidad, nLect ≤ n´umero procesos (protocolo:

IniciarLectura ; TerminalLectura)

Ciclos IniciarLectura /TerminarLecturano pasan por nodos donde se puede iniciar escrituras

Situaci´on intr´ınseca al problema (verlectsesc.adb) TerminarLectura, en cierto sentido, favorece IniciarLectura

(4)

Turno en lectores y escritores

Doble bloqueo: causar´ıa detenci´on Puntos a tratar:

I Evitar llegada continua lectores

I Decidir si entra lector o escritor al acabar un escritor Idea: dejar a un cierto n´umero de lectores

Flexibilidad: no fijar este n´umero

Turno: resuelve empate si lectores y escritores intentan entrar Turno de lectores: da preferencia a lectores si hay competencia Turno de escritores: al rev´es

Cambio de turno:

I El primer lector que termina

I El (primer) escritor que termina

M. Carro (UPM) ecnicas O.P. 10 / 20

Funcionamiento

E: escritor Li: lectores

Esperando L2, L3 L3

E

Ejecutando L1E L2L2

turnoLectura¬turnoLectura¬turnoLectura¬turnoLecturaturnoLectura

1 L2 y L3 pueden entrar; E no

2 L2 entra

3 L1 termina, cambia el turno, L3 no puede entrar

4 Ahora s´olo puede entrar E

5 E entra

6 Al salir cambia el turno; L3 puede entrar

M. Carro (UPM) ecnicas O.P. 11 / 20

Lectores / escritores: vivacidad

¿Cu´ando intenta entrar un escritor / lector?

Lectores, escritores bloqueados: atributo Count IniciarLectura ’ Count, IniciarEscritura ’ Count

Otros m´etodos en otros lenguajes / paradigmas de concurrencia (ej., monitores)

Supondemos nLectEsp, nEscEsp Puede simularse:

PROTOCOLOS: Leer: PermisoLect; IniciarLect; TerminarLect CONCURRENCIA: Leer*

Veremos c´omo quedan las precondiciones

nLectEsp y nEscEsp pueden implementarse de varios modos (dependiendo, p.ej., del lenguaje)

(5)

Lectores / escritores: tipo

Aumentamos tipo anterior

Nuevo: n´umero de procesos esperando, turno

TIPO: TipoGestor = (nLect : N × Escrib : B × turnoLect : B × nLectEsp : N × nEscEsp : N)

INVARIANTE: ∀g ∈ TipoGestor .(g .Escrib → g .nLect = 0)

Aumentamos tambi´en la sincronizaci´on Pero sin violar la seguridad:

CPREvivacidad → CPREseguridad

lectsesc.adbvs.lectsesc seg.adb

M. Carro (UPM) ecnicas O.P. 13 / 20

Lectores / escritores: vivacidad

CPRE: ¬g .nEscrib ∧ (turnoLect ∨ nEscEsp = 0) IniciarLectura (g)

POST: gsal = gent\ g .nLectsal= g .nLectent+ 1 CPRE: cierto

TerminarLectura (g)

POST: gsal = gent\ g .nLectsal= g .nLectent− 1 ∧ ¬turnoLect CPRE: ¬g .nEscrib ∧ nLect = 0 ∧ (¬turnoLect ∨ nLectEsp = 0)

IniciarEscritura (g) POST: gsal = gent\ g .nEscrib CPRE: cierto

TerminarEscritura (g)

POST: gsal = gent\ ¬g .nEscrib ∧ turnoLect

M. Carro (UPM) ecnicas O.P. 14 / 20

CPRE/POST

+

Operaci´on CPRE POST+

IniciarLectura ¬Escrib ∧ (turnoLect ∨ nEscEsp = 0)

nLect ≥ 0 ∧ ¬Escrib

∧nLectsal = nLectent + 1∧

(turnoLect ∨ nEscEsp = 0) IniciarEscritura nLect = 0 ∧

¬Escrib ∧

(¬turnoLect ∨ nLectEsp = 0)

nLect = 0 ∧Escrib

TerminarLectura cierto ¬Escrib ∧¬turnoLect ∧ nLectsal= nLectent− 1 TerminarEscritura cierto nLect = 0 ∧ ¬Escrib

∧turnoLect

(6)

Grafo con consideraciones de vivacidad

¿Asegura vivacidad la idea anterior?

Grafo: comprobaci´on no formal, pero ayuda a convencernos N´umero lectores, escritores expl´ıcito en estado

nLect, Escrib, TurnoL, nLectEsp, nEscEsp

daVinciV2.1

e(0,f,v,0,1)

e(0,v,v,0,0)

e(0,f,v,0,0)

Cero lectores, un escritor

daVinciV2.1

e(0,f,f,1,0) e(0,f,v,1,0)

e(1,f,f,0,0) e(1,f,v,0,0)

e(0,f,f,0,0) e(0,f,v,0,0)

Un lector, cero escritores

M. Carro (UPM) ecnicas O.P. 16 / 20

L´ımites de grafos de estados

daVinciV2.1

e(0,f,v,0,0) e(0,f,f,0,0)

e(0,v,v,0,0) e(0,v,f,0,0)

e(0,f,v,0,1) e(0,f,f,0,1)

e(1,f,v,0,0)

e(1,f,f,0,0) e(0,f,v,1,0)

e(0,f,f,1,0) e(1,f,v,0,1)

e(1,f,f,0,1)

e(0,v,v,1,0)

e(0,v,f,1,0)

e(0,f,v,1,1)

e(0,f,f,1,1)

Un lector, un escritor

Dif´ıcil percibir al aumentar n´umero procesos (ej., 5 lectores y 5 escritores: 312 estados) Complicado encontrar estructura

Mejor recurrir a:

I Representaciones alternativas grafos

I T´ecnicas con m´as base formal (tabla de desbloqueos)

M. Carro (UPM) ecnicas O.P. 17 / 20

Abstracci´on y determinismo en transiciones

No importa el n´umero concreto de procesos esperando

Ini.Lec.

Ini.Lec.

Ter.Lec. Ter.Lec.

. . .

. . . Ini.Lec. Ini.Lec.

Ter.Lec. Ter.Lec.

Ter.Lec. Ter.Lec. Ter.Lec. Ter.Lec.

Ini.Esc.

Ini.Esc.

Ter.Esc.

Ter.Esc.

Ini.Lec. Ini.Lec. Ini.Lec. Ini.Lec.

[1] [1] [1] [1]

[2]

(0,f,f)

(0,v,f)

(0,f,v)

(0,v,v)

(1,f,v) (2,f,v) (k,f,v)

(k,f,f) (2,f,f)

(1,f,f)

[1] S´olo si no hay IniciarEscritura candidato [2] S´olo si no hay IniciarLectura candidato

(7)

Uso de turnos

Com´un: L/E s´olo un ejemplo

En esta caso s´olo dos tipos de procesos Puede haber varios:

I Diferenciados por la operaci´on llamada

I Diferenciados por los par´ametros

M. Carro (UPM) ecnicas O.P. 19 / 20

Ejemplo: puente estrecho

Coches intentan cruzar un puente

No hay espacio para ambas direcciones Similar a lectores/escritores

Modelizar y programar (con vivacidad) Dificultad adicional:

I Cada veh´ıculo un peso diferente

I Puente aguanta peso m´aximo (sumar el de los veh´ıculos)

M. Carro (UPM) ecnicas O.P. 20 / 20

Referencias

Documento similar

Para ayudar a los alumnos a desarrollar el pensamiento algorítmico, se propuso desarrollar un sistema que facilitara la resolución de problemas y experimentación

Estudio Curso Turno

39 RIVAS MARTINEZ DIEGO GAEL. 40 RODAS ZAMORANO

En conclusión, se observó que la mayoría de las muje- res en el presente estudio que trabajan en rotación labo- ral (una semana de turno nocturno, seguida de una semana de

1- La ubicación de los espacios curriculares por año expuesta debajo de esta columna, corresponde particularmente a la organización prevista en el Plan de

recho, las salidas de esta carrera tienen un carácter absoluta- mente caleidoscópico. Respecto al estado actual de la Justicia todo es una cues- tión de prioridades, si

¿Cómo influyen los procesos para la identificación de letras en el desarrollo de la competencia lectora en los estudiantes de segundo grado de educación primaria del distrito

Mediante Resolución de 12 de julio de 2021 se realiza la distribución de créditos y número de contratos por áreas científico-técnicas en el turno de acceso general y del turno