Está en la página 1de 13

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;

También podría gustarte