Protocolos para Control de Concurrencia
-
Upload
api-3704741 -
Category
Documents
-
view
1.077 -
download
0
Transcript of Protocolos para Control de Concurrencia
![Page 1: Protocolos para Control de Concurrencia](https://reader036.fdocuments.ec/reader036/viewer/2022082401/5571f20449795947648bfc67/html5/thumbnails/1.jpg)
Protocolos para Control de Concurrencia
![Page 2: Protocolos para Control de Concurrencia](https://reader036.fdocuments.ec/reader036/viewer/2022082401/5571f20449795947648bfc67/html5/thumbnails/2.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022082401/5571f20449795947648bfc67/html5/thumbnails/3.jpg)
Bloqueo Binario
Tipos de bloqueos:
Bloqueos Binarios.
Bloqueos de modo Múltiple.
![Page 4: Protocolos para Control de Concurrencia](https://reader036.fdocuments.ec/reader036/viewer/2022082401/5571f20449795947648bfc67/html5/thumbnails/4.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022082401/5571f20449795947648bfc67/html5/thumbnails/5.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022082401/5571f20449795947648bfc67/html5/thumbnails/6.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022082401/5571f20449795947648bfc67/html5/thumbnails/7.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022082401/5571f20449795947648bfc67/html5/thumbnails/8.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022082401/5571f20449795947648bfc67/html5/thumbnails/9.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022082401/5571f20449795947648bfc67/html5/thumbnails/10.jpg)
Bloqueos de modo Múltiple Tres estados posibles: 'bloqueado para lectura' 'bloqueado para escritura‘ 'desbloqueado'.
![Page 11: Protocolos para Control de Concurrencia](https://reader036.fdocuments.ec/reader036/viewer/2022082401/5571f20449795947648bfc67/html5/thumbnails/11.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022082401/5571f20449795947648bfc67/html5/thumbnails/12.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022082401/5571f20449795947648bfc67/html5/thumbnails/13.jpg)
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;