Un modelo de consistencia de memoria especifica las
garantías de consistencia que un sistema MCD realiza sobre los valores que los
procesos leen desde los objetos, dado que en realidad acceden sobre una réplica
de cada objeto y que múltiples procesos pueden actualizar los objetos.
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 cada escritura es necesario actualizar todas las
copias el envió de las paginas por red provoca que el tiempo de espera aumente
demasiado convirtiendo el método en impracticable.
CARACTERISTICAS DE CONSISTENCIA
• Mantener consistencia no es algo simple.
• Un simple acceso a memoria puede requerir un gran
número de paquetes a ser enviados.
MODELOS DE
CONSISTENCIAS, DEL MAS FUERTE AL MAS DEBIL.
ESTRICTA, CASUAL, SECUENCIAL, DEBIL, DE
LIBERACION Y DE ENTRADA
CONSISTENCIA ESTRICTA: El modelo de consistencia más restrictivo es
llamado consistencia estricta y es definido por la siguiente condición
cualquier lectura sobre un ítem de dato X retorna un valor correspondiente con
la más reciente escritura sobre X.
CONSISTENCIA CASUAL: Es un debilitamiento de la consistencia
secuencial. Se hace una diferenciación entre eventos que están potencialmente
relacionados en forma casual y aquellos que no.
La condición a cumplir para que unos datos sean
casualmente consistentes es:
Escrituras que están potencialmente relacionados en
forma casual deben ser vistas por todos los procesos en el mismo orden.
Esta secuencia es permitida con un almacenamiento
casualmente consistente o con un almacenamiento consistente en forma estricta.
El modelo de consistencia causal (Hutto and Ahamad,
1990) es un debilitamiento de la consistencia secuencial. Se hace una
diferenciación entre eventos que están potencialmente relacionados en forma
causal y aquellos que no. Las operaciones que no están causalmente relacionadas
se dicen concurrentes.
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.
Esta secuencia 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 y las operaciones de cada proceso individual aparecen
en esta operaciones de cada proceso individual aparecen en esta secuencia en el
orden especificado por su programa
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 ítems de datos hasta que no se hayan
completado operaciones previas sobre variables de sincronización.
CONSISTENCIA LIBERACIÓN (RELEASE): El modelo de
consistencia release, RC, 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.
Puesto que ningún otro proceso, ni local ni remoto,
puede acceder a las variables que han sido modificadas mientras se encuentren
protegidas en la sección critica, la actualización de cualquier modificación
puede postergarse hasta el momento en que se lleva a cabo la operación reléase.
La operación release no se da por completada hasta
que la actualización haya sido propagada a todos aquellos procesadores en donde
haya replicas. Con RC, la propagación de un conjunto de modificaciones a
memoria compartida se lleva a cabo con un costo fijo.
Propagación de Actualizaciones bajo RC y LRC de
código sin proteger. En consecuencia obtuvo un valor inconsistente para la
variable leída.
No hay comentarios:
Publicar un comentario