Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Concurrencias
Por: Cordoba, Benjamin;
Díaz, David;
Rojas, Rafael;
Zamorano, Corina;
Zou, Raymond.
Introducción
La meta de las transacciones es asegurar que todos los objetos gestionados por un
servidor permanecen en un estado consistente cuando dichos objetos son accedidos por
múltiples transacciones y en presencia de caídas del servidor.
Una transacción viene especificada desde un cliente como un conjunto de operaciones
sobre los objetos que se realizaran como una unidad indivisible por los servidores que
gestionan dichos objetos. Los servidores deben garantizar que se realiza completamente
la transacción y que los resultados se almacenan en una memoria permanente o, en el
caso de una o más caídas , sus efectos se eliminan completamente.
En la siguiente presentación discutiremos temas relacionados con transacciones que
implican varios servidores, conoceremos los métodos de control de concurrencia para
transacciones, transacciones anidadas.
Transacciones
}
Mejora de la colaboración del cliente mediante
sincronización de las operaciones del servidor
Los clientes pueden utilizar un servido como un medio de compartir algunos recursos.
Esto se consigue por algunos clientes utilizando operaciones para actualizar los objetos
del servidor y otros utilizando operaciones para acceder a ellos.
Los métodos wait y notify permiten que los hilos se comuniquen con los otros de manera
que resuelva los problemas anteriores. Deben utilizarse dentro de los métodos
sincronizados de un objeto.
Un hilo llama a wait en un objeto para suspenderse él mismo y permitir a otro hilo
ejecutar un método de ese objeto.
Un hilo llama a notify para informar que cualquier hilo que esté esperando en el objeto
que ha cambiado alguno de sus datos
Modelo de Fallos para
transacciones
Lampson propuso un modelo de fallos para transacciones distribuidas que considera los
fallos en: Discos, Servidores y Comunicación. En el modelo se intenta que los algoritmos
trabajen correctamente en presencia de fallos predecibles, pero no se hacen
consideraciones cuando ocurre un desastre. El modelo establece lo siguiente:
Las escrituras pueden fallar (no se escribe nada, o se escribe un valor incorrecto)
Los servidores pueden fallar ocasionalmente. Cuando el servidor se reemplaza por otro, el
nuevo proceso debe realizar un proceso de recuperación utilizando la memoria
permanente y la información que le puedan suministrar otros procesos.
Puede existir un retardo arbitrario antes de que llegue un mensaje. Un mensaje se puede
perder, duplicar o modificar. Se pueden detectar mensajes modificados. Los mensajes
falsificados y corruptos que no se puedan detectar se les considera como desastres.
Solicitudes atómicas
Los métodos de bloqueos están sincronizados de modo que los hilos que
intentan adquirir o liberar un bloqueo no interfieran con el otro.
Servicio de Control de Concurrencia
CORBA
Define las interfaces que permiten que múltiples objetos distribuidos
cooperen con el fin de proveer atomicidad.
Estas interfaces habilitan a los objetos a realizar "commit" (acometer)
todas las transacciones o "rollback" (reversar) las mismas en presencia de
alguna falla.
Habilita a múltiples clientes para acceder de manera coordinada a los
recursos compartidos.
El uso concurrente de los recursos es regulado con semáforos y cada
semáforo se asocia con un recurso y un cliente particular.
Bloqueo Indefinido
Donde:
R1 asignado a A y espera
por R2
R2 asignada a B y espera
por R1
Condiciones
Para impedir abortos en cascada, los bloqueo no pueden ser liberados hasta el
final de la transacción.
Kung y Robinson
Control Optimista de la Concurrencia
Es un método de control de concurrencia que se aplica a sistemas
transaccionales, tales como sistemas de gestión de bases de datos
relacionales y memoria transaccional de software. Antes de hacer el commit,
cada transacción verifica que ninguna otra transacción ha modificado los
datos que ha leído. Si la comprobación revela modificaciones en conflicto, la
transacción que iba a hacer commit hace un rollback y se puede reiniciar.
Kung
Control Optimista de la Concurrencia
Estrategias alternativas de resolver conflictos transacciones:
Arder
Abortar la transacciones que esta validado.
Regla Tc(actua Ti
l) (inicial)
1 Tc no debe escribir un objeto que haya sido leído por cualquier Ti
Escritura Lectura donde Ti > Tc’ esto require Tc >= a la mayor marca de tiempo de
lectura del objeto.
2 Tc no debe ser escribir un objeto que haya sido escrito por cualquier
Escritura Escritura Ti donde Ti > Tc’ esto requiere q Tc > la marca de tiempo de escritura
del objeto consumado.
3 Tc no debe leer un objeto que haya sido escrito por cualquier Ti donde
Lectura Escritura Ti >Tc’ esto requiere que Tc > la marca de tiempo de escritura del
Regla de Escritura por Ordenación de Marca de Tiempo
Tiemp
o
Regla de Escritura por Ordenación de Marca de Tiempo
Antes T2 Antes T2 T4
Después T2 T3 Despué T2 T3 T4
s
Tiemp Tiemp
o o
Si ((Tc lectura >= la máxima marca de tiempo de
lectura en D ) &&
(c)T3 escritura
(Tc escritura > la marca e tiempo de escritura en
la versión consumada de D))
de otro modo
Espera hasta la consumación de transacción que hizo
la versión D seleccionada o aborte después de replicar la regla de lectura
De otro modo Ti Tc
aborta la transacción Tc. Leer(D)
Escribir(
D) Leer(D)
Escribir(
D)
Tiemp
Regla de Lectura por Ordenación de Marca de Tiempo
seleccionada
Tiemp Tiemp
o o
T1 < T2 < T3 <T4
Ejercicio
1 2 3 4
Ti Tc Ti Tc Ti Tc Ti Tc