La duplicidad de los bloques compartidos aumenta el
rendimiento, pero produce un problema de consistencia entre las diferentes
copias de la página en caso de una escritura. Si con cada escritura es
necesario actualizar todas las copias, el envío de las páginas por la red
provoca que el tiempo de espera aumente demasiado, convirtiendo este método en
impracticable. Para solucionar este problema se proponen diferentes modelos de
consistencia, que establezcan.
Nombramos algunos modelos de consistencia, del más fuerte al
más débil: consistencia estricta, secuencial, causal, PRAM, del procesador,
débil, de liberación y de entrada
ESTRICTA, CASUAL, SECUENCIAL, DEBIL, DE LIBERACION Y DE
ENTRADA.
CONSISTENCIA CASUAL: La condición a cumplir para que unos
datos sean causalmente consistentes es:
• Escrituras que están potencialmente relacionadas en forma
causal deben ser vistas por todos los procesos en el mismo orden.
• Escrituras concurrentes pueden ser vistas en un orden
diferente sobre diferentes máquinas.
Es permitida con un almacenamiento causalmente consistente,
pero no con un almacenamiento secuencialmente consistente o con un
almacenamiento consistente en forma estricta.
CONSISTENCIA SECUENCIAL: La consistencia secuencial es una
forma ligeramente más débil de la consistencia estricta. Satisface la siguiente
condición:
El resultado de una ejecución es el mismo si las operaciones
(lectura y escritura) de todos los procesos sobre el dato fueron ejecutadas en
algún orden secuencial
a) Un dato almacenado secuencialmente consistente.
b) Un dato almacenado que no es secuencialmente consistente.
CONSISTENCIA DÉBIL: Los accesos a variables de sincronización
asociadas con los datos almacenados son secuencialmente consistentes.
Propiedades
No se permite operación sobre una variable de sincronización
hasta que todas las escrituras previas de hayan completado.
No se permiten
operaciones de escritura o lectura sobre
datos hasta que no se hayan completado operaciones previas sobre
variables de sincronización.
CONSISTECIA DE LIBERACION: Se basa en el supuesto de que los
accesos a variables compartidas se protegen en secciones críticas empleando
primitivas de sincronización, como por ejemplo locks. En tal caso, todo acceso
esta precedido por una operación adquiere y seguido por una operación release.
Es responsabilidad del programador que esta propiedad se cumpla en todos los
programas.
No hay comentarios:
Publicar un comentario