Protocolos para Control de Concurrencia

13
Protocolos para Control de Concurrencia

Transcript of Protocolos para Control de Concurrencia

Page 1: Protocolos para Control de Concurrencia

Protocolos para Control de Concurrencia

Page 2: Protocolos para Control de Concurrencia

Protocolos para Control de Concurrencia La mayoría de los protocolos utilizan técnicas

de bloqueo (locking) de los ítems de datos para prevenir que múltiples transacciones accedan a los ítems concurrentemente.

Un bloqueo es una variable asociada con un ítem utilizada para almacenar el estado de ese ítem con respecto a posibles operaciones que le puedan ser aplicadas.

Page 3: Protocolos para Control de Concurrencia

Bloqueo Binario

Tipos de bloqueos:

Bloqueos Binarios.

Bloqueos de modo Múltiple.

Page 4: Protocolos para Control de Concurrencia

Bloqueo Binario

Un bloqueo puede tener estados o valores: bloqueado, desbloqueado (0 y 1).

Si el bloqueo sobre X es 1, ninguna operación de la base de datos que solicite el elemento podrá tener acceso si es 0, se podrá tener acceso al elemento cuando se solicite.

Page 5: Protocolos para Control de Concurrencia

Bloqueo Binario

Se debe incluir en las transacciones dos operaciones, bloquear_elemento y desbloquear_elemento.

Se deben implementar como unidades indivisibles

(conocidas como secciones críticas en los sistemas operativos)

Impone una exclusión mutua sobre el elemento de datos.

Page 6: Protocolos para Control de Concurrencia

Bloqueo Binario

En la forma más simple cada bloqueo puede ser un registro con tres campos: nombre de elemento de datos, bloqueo, transacción que bloquea además de una cola para las transacciones que están esperando acceder al elemento.

Page 7: Protocolos para Control de Concurrencia

Bloqueo Binario

Reglas:

1. Una transacción T debe realizar una operación Bloquear_ítem(X) antes que un Leer_Ítem(X) o Escribir_ítem(X).

2. Una transacción T debe realizar una operación Desbloquear_ítem(X) después de que todos los Leer_ítem(X) y Escribir_ítem(X) en T se han completado.

Page 8: Protocolos para Control de Concurrencia

Bloqueo Binario

3. Una transacción T no realizará un Bloquear_ítem(X) si ya posee el bloqueo de X.

4. Una transacción T no realizará un Desbloquear_ítem(X) salvo que posea el bloqueo de X.

Page 9: Protocolos para Control de Concurrencia

Bloqueos de modo Múltiple Son una ampliación de los bloqueos binarios.

Tres operaciones de bloqueo diferentes: Bloquear_para_lectura(X) Bloquear_para_escritura(X) Desbloquear_ítem(X).

Page 10: Protocolos para Control de Concurrencia

Bloqueos de modo Múltiple Tres estados posibles: 'bloqueado para lectura' 'bloqueado para escritura‘ 'desbloqueado'.

Page 11: Protocolos para Control de Concurrencia

Alcance de los candados

Exclusivo: prohíbe el compartir un recurso. La primera transacción que asigna esta llave puede accederlo, mientras que la segunda debe esperar hasta que este sea liberado.

Compartidos: dependiendo de las operaciones involucradas permite que los recursos sean compartidos por varios usuarios.

Detección de situaciones de abrazo mortal (deadlock).

Page 12: Protocolos para Control de Concurrencia

Ejemplos-Bloquear

Bloquear_elemento

B: si CANDADO(X)=0 (el elemento esta desbloqueado)

entonces CANDADO(X) 1 (bloquear elemento)

de otro modo comenzar

esperar(hasta que CANDADO(X)=0 y

el gestor de bloqueo despierte la transaccion);

ir a B

fin;

Page 13: Protocolos para Control de Concurrencia

Ejemplos-Desbloquear

desbloquear_elemento(X)

CANDADO(X)0 (desbloquear el elemento)

si alguna transacción esta esperando

entonces despertar una de las transacciones que esperan;