Protocolos para Control de Concurrencia

Post on 07-Jun-2015

1.077 views 0 download

Transcript of Protocolos para Control de Concurrencia

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.

Bloqueo Binario

Tipos de bloqueos:

Bloqueos Binarios.

Bloqueos de modo Múltiple.

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.

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.

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.

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.

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.

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).

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

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).

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;

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;