domingo, 26 de junio de 2011

TECNICAS DE BLOQUEO (2) Bloqueos de lectura/escritura

         El sistema de bloqueos binarios es simple pero demasiado restrictivo, ya que no permite que dos transacciones que van a leer el mismo fragmento de datos (A) lo hagan simultáneamente, cuando en realidad, no puede haber problemas en varios lectores simultáneos. 

    Los bloqueos de lectura/escritura hacen más débil la restricción permitiendo la siguiente compatibilidad de bloqueos.
         En realidad son una ampliación de los bloqueos binarios,
tenemos que el bloqueo puede tener tres posibles posiciones:

             *.-  libre
              *.-   bloqueado para lectura,  
               *.-   bloqueado para escritura.


            De esta forma, más de una transacción puede tener un mismo elemento de datos bloqueado para lectura, pero sólo una para escritura. Si una transacción quiere escribir en ese elemento, habrá de esperar a que el bloqueo quede libre (cualquiera que sea el tipo de bloqueo), y a continuación, bloquearlo para escritura.

             Si quiere leer, sólo tendrá que esperar si el elemento está bloqueado para escritura. Se dice por tanto, que el bloqueo de lectura es compartido y el de escritura exclusivo. Tendremos por tanto tres operaciones; bloquear_escritura(X), bloquear_lectura(X) y desbloquear(X).

          El sistema debe hacer cumplir las siguientes reglas para usar los bloqueos de lectura/escritura:
    1.-Una transacción T debe emitir la operación bloquear_lectura(x) o bloquear_escritura(X) antes de que se realice cualquier operación leer_elemento(X) de T.
    2.- Una transacción T debe emitir la operación bloquear_escritura(X) antes de que realice cualquier operación escribir_elemento(X) de T.
    3.- Una transacción T debe emitir la operación desbloquear(X) una vez que se hayan completado todas las operaciones leer_elemento(X) y escribir_elemento(X) de T.
    4.- Una transacción T no emitirá una operación bloquear_lectura(X) si ya posee un bloqueo de lectura (compartido) o de escritura (exclusivo) para el elemento X.
    5.- Una transacción T no emitirá una operación bloquear_escritura(X) si ya posee un bloqueo de lectura (compartido) o de escritura (exclusivo) para el elemento X.

    No hay comentarios:

    Publicar un comentario