Está en la página 1de 5

REPBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR PARA LA DEFENSA UNIVERSIDAD NACIONAL EXPERIMENTAL POLITCNICA DE LA FUERZA ARMADA

BOLIVARIANA (UNEFAB) NCLEO FALCN EXTENSIN PUNTO FIJO VIII SEMESTRE ING. EN SISTEMAS SECCIN A DIURNO

Realizado por: Garca Joel

Punto Fijo, Octubre del 2013.

Bloqueo Exclusivo

Si una transaccin T mantiene un bloqueo exclusivo sobre algn objeto (digamos un registro de la base de datos), entonces ninguna transaccin distinta de T puede adquirir un bloqueo de ningn tipo sobre ese objeto hasta que la transaccin T libere su bloqueo. Para hacer uso de este tipo de bloqueo se define un protocolo llamado protocolo PX, el cual consiste en que cualquier transaccin que intente actualizar un registro R debe primero ejecutar un XFIND R para obtener direccionalidad sobre el registro y para adquirir el bloqueo exclusivo sobre l. Si el bloqueo no puede ser adquirido en ese momento la transaccin entra a un estado de espera (el XFIND es acepta pero no es otorgado en ese momento); la transaccin va a reasumir su ejecucin cuando el registro est disponible y el bloqueo pueda ser garantizado. Se utiliza cuando se quiere actualizar datos.

Bloqueo Compartido

Cuando una transaccin bloquea en este modo, permite que otras transacciones retengan tambin el objeto en bloque compartido, pero no exclusivo. Este tipo se utiliza cuando no se requiere actualizar datos, pero se desea impedir cualquier modificacin mientras los datos son consultados. Ninguna otra transaccin podr modificar los datos mientras el bloqueo compartido exista en el recurso. Los bloqueos compartidos en un recurso se liberan tan pronto como finaliza la operacin de lectura, a menos que se haya establecido el nivel de aislamiento de la transaccin como REPEATABLE READ o ms alto, o bien se utilice una sugerencia de bloqueo para mantener los bloqueos compartidos durante la transaccin.

Bloqueo de Actualizacin

Consiste en evitar una forma comn de interbloqueo. En una transaccin de lectura repetible, la transaccin lee los datos, adquiere un bloqueo compartido (S) en el recurso (pgina o fila) y, a continuacin, modifica los datos, lo que requiere una conversin del bloqueo en un bloqueo exclusivo (X). Si dos transacciones adquieren bloqueos compartidos en un recurso y, a continuacin, intentan actualizar los datos simultneamente, una de ellas intenta convertir el bloqueo en un bloqueo exclusivo (X). La conversin de bloqueo compartido en exclusivo debe esperar, ya que el bloqueo exclusivo de una transaccin no es compatible con el bloqueo compartido de la otra. Por tanto, se produce una espera de bloqueos. La segunda transaccin intenta adquirir un bloqueo exclusivo (X) para realizar su actualizacin. Debido a que ambas transacciones intentan convertir los bloqueos en exclusivos (X) y cada una espera a que la otra libere su bloqueo de modo compartido, se produce un interbloqueo. Para evitar este posible problema de interbloqueo, se utilizan los bloqueos de actualizacin (U). Dos transacciones no pueden obtener simultneamente un bloqueo de actualizacin (U) para un recurso. Si una transaccin modifica un recurso, el bloqueo de actualizacin (U) se convierte en un bloqueo exclusivo (X).

Bloque en Dos Fases

Cualquier transaccin que despus de liberar un bloqueo adquiere otro siempre corre el riesgo de producir resultados incorrectos. Esto es, siempre es posible definir una segunda transaccin que pueda ejecutarse

concurrentemente con la primera de manera tal que la ejecucin intercalada o concurrente de ambas no sea serializables y por ende no correcta. Las dos fases son una fase creciente durante la cual los bloqueos son adquiridos, y una fase decreciente durante la cual los bloqueos son liberados.

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 simultneamente, cuando en realidad, no puede haber problemas en varios lectores simultneos. Los bloqueos de lectura/escritura hacen ms dbil la restriccin permitiendo la siguiente compatibilidad de bloqueos. En realidad son una ampliacin de los bloqueos binarios, tenemos que el bloqueo puede tener tres posibles posiciones: Libre Bloqueado para lectura, Bloqueado para escritura.

De esta forma, ms de una transaccin puede tener un mismo elemento de datos bloqueado para lectura, pero slo una para escritura. Si una transaccin quiere escribir en ese elemento, habr de esperar a que el bloqueo quede libre (cualquiera que sea el tipo de bloqueo), y a continuacin, bloquearlo para escritura.

Si quiere leer, slo 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 transaccin T debe emitir la operacin bloquear_lectura(x) o bloquear_escritura(X) antes de que se realice cualquier operacin leer_elemento(X) de T. 2. Una transaccin T debe emitir la operacin bloquear_escritura(X) antes de que realice cualquier operacin escribir_elemento(X) de T.

3. Una transaccin T debe emitir la operacin desbloquear(X) una vez que se hayan completado todas las operaciones leer_elemento(X) y escribir_elemento(X) de T. 4. Una transaccin T no emitir una operacin bloquear_lectura(X) si ya posee un bloqueo de lectura (compartido) o de escritura (exclusivo) para el elemento X. 5. Una transaccin T no emitir una operacin bloquear escritura(X) si ya posee un bloqueo de lectura (compartido) o de escritura (exclusivo) para el elemento X. 6. Una transaccin T no emitir una operacin desbloquear(X) a menos que ya posea algn tipo de bloqueo sobre el elemento X.

También podría gustarte