Ahora que estamos familiarizados con lo que es el bloqueo de dos fases (2-PL) y las reglas básicas que deben seguirse para garantizar la serialización. Además, nos encontramos con los problemas con 2-PL, cancelaciones en cascada y bloqueos mutuos. Ahora, pasamos a las mejoras realizadas en 2-PL que intentan que el protocolo esté casi libre de errores. Brevemente, permitimos algunas modificaciones a 2-PL para mejorarlo. Hay tres categorías:
- 2-PL estricto
- Riguroso 2-PL
- Conservador 2-PL
Ahora recuerda las reglas seguidas en Basic 2-PL, sobre eso hacemos algunas modificaciones adicionales. Veamos ahora cuáles son las modificaciones y qué inconvenientes solucionan.
2-PL estricto –
Esto requiere que, además de que el bloqueo sea de 2 fases, todos los bloqueos exclusivos (X) retenidos por la transacción se liberen hasta después de la confirmación de la transacción.
Seguir Strict 2-PL asegura que nuestro horario sea:
- Recuperable
- sin cascada
Por lo tanto, nos libera del aborto en cascada que todavía estaba allí en Basic 2-PL y, además, garantiza horarios estrictos, pero aún así, ¡ los interbloqueos son posibles !
Riguroso 2-PL –
Esto requiere que, además de que el bloqueo sea de 2 fases, todos los bloqueos exclusivos (X) y compartidos (S) retenidos por la transacción se liberen hasta después de la confirmación de la transacción.
Siguiendo Riguroso 2-PL asegura que nuestro horario es:
- Recuperable
- sin cascada
Por lo tanto, nos libera del aborto en cascada que todavía estaba allí en Basic 2-PL y, además, garantiza horarios estrictos, pero aún así, ¡ los interbloqueos son posibles !
Tenga en cuenta que la diferencia entre Strict 2-PL y Rigorous 2-PL es que Rigorous es más restrictivo, requiere que se mantengan tanto los bloqueos exclusivos como los compartidos hasta después de que se confirme la transacción y esto es lo que facilita la implementación de Rigorous 2-PL.
Conservador 2-PL –
También conocido como Static 2-PL , este protocolo requiere que la transacción bloquee todos los elementos a los que accede antes de que la transacción comience a ejecutarse mediante la declaración previa de su conjunto de lectura y escritura. Si alguno de los elementos predeclarados necesarios no se puede bloquear, la transacción no bloquea ninguno de los elementos, sino que espera hasta que todos los elementos estén disponibles para el bloqueo.
Conservative 2-PL está libre de interbloqueos y no garantiza un horario estricto (¡Más sobre esto aquí !). Sin embargo, es difícil de usar en la práctica debido a la necesidad de predeclarar el conjunto de lectura y el conjunto de escritura, lo que no es posible en muchas situaciones. En la práctica, la variación más popular de 2-PL es Strict 2-PL.
El siguiente Diagrama de Venn muestra la clasificación de los horarios que son rigurosos y estrictos. El universo representa los horarios que se pueden serializar como 2-PL. Ahora, como sugiere el diagrama, y también se puede concluir lógicamente, si un programa es Riguroso, entonces es Estricto. También podemos pensar de otra manera, digamos que ponemos una restricción en un horario que lo hace estricto, agregando otra a la lista de restricciones que lo hacen Riguroso. Tómate un momento para volver a analizar el diagrama y definitivamente lo obtendrás.
Imagen: Diagrama de Venn que muestra categorías de idiomas bajo 2-PL
Ahora, veamos el cronograma a continuación, dígame si este cronograma se puede bloquear usando 2-PL, y si es así, muestre cómo y a qué clase de 2-PL pertenece su respuesta.
T 1 | T 2 | |
---|---|---|
1 | Leer un) | |
2 | Leer un) | |
3 | Leer (B) | |
4 | Escribir (B) | |
5 | Comprometerse | |
6 | Leer (B) | |
7 | Escribir (B) | |
6 | Comprometerse |
Te recomiendo que pruebes antes de mirar la solución.
Sí, el cronograma es serializable en conflicto, por lo que podemos intentar implementar 2-PL. Entonces intentemos…
Solución:
T 1 | T 2 | |
---|---|---|
1 | Bloqueo-S(A) | |
2 | Leer un) | |
3 | Bloqueo-S(A) | |
4 | Leer un) | |
5 | Bloqueo-X(B) | |
6 | Leer (B) | |
7 | Escribir (B) | |
8 | Comprometerse | |
9 | Desbloquear (A) | |
10 | Desbloquear (B) | |
11 | Bloqueo-X(B) | |
12 | Leer (B) | |
13 | Escribir (B) | |
14 | Comprometerse | |
15 | Desbloquear (A) | |
dieciséis | Desbloquear (B) |
Ahora, esta es una forma que elijo para implementar los bloqueos en A y B. Puede probar una secuencia diferente, pero recuerde seguir el protocolo 2-PL. Dicho esto, observe que nuestros bloqueos se liberan después de la operación Commit, por lo que esto satisface el protocolo Rigorous 2-PL.
A estas alturas, supongo que debe tener la idea de cómo diferenciar entre tipos de 2-PL. Recuerde la teoría ya que los problemas vienen en el examen a veces solo en base a conocimientos teóricos. A continuación, veremos algunos ejemplos de Conservative 2-PL y en qué se diferencia de los dos tipos de 2-PL anteriores. Lo que lo hace libre de interbloqueos y también tan difícil de implementar. Luego concluiremos el tema de 2-PL. En breve pasaremos a otro tipo de protocolo basado en bloqueo: protocolos basados en gráficos. ¡También son muy interesantes y proporcionan un método único para tratar el problema de los interbloqueos! Entonces, aprenderemos un nuevo tipo de protocolo de bloqueo, que concluirá el tema del Protocolo basado en bloqueo para GATE, hasta entonces Feliz aprendizaje.
Pregunta relacionada con GATE:
GATE CS | TI 2004 | Pregunta 77