Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Coherencia de los datos y Sincronización de procesos (página 2)




Enviado por Pablo Turmero



Partes: 1, 2

Monografias.com

? En la mayoría de las aplicaciones es necesario regular el acceso y uso de las variables compartidas
? Se necesitan accesos atómicos de tipo RMW
(2) Sincronización de proc.
(Gp:) …
LD R1,CONT
ADDI R1,R1,#1
ST CONT,R1

(Gp:) Pi

(Gp:) …
LD R1,CONT
ADDI R1,R1,#1
ST CONT,R1

(Gp:) Pj

LD..ADDI…….ST
LD….ADDI…..ST
CONT = 1!!!

Monografias.com

? Dos tipos básicos:
control de acceso a secciones críticas
trozos de código que se ejecutan en estricta exclusión mutua (sólo un procesador cada vez)
– sincronización entre procesos
modelo productor / consumidor:

1 a 1 ? eventos
global ? barreras
Sincronización

Monografias.com

? Variables “cerrojo” (abierto/cerrado) para asegurar el acceso secuencial a la sección crítica.
? Dos funciones para controlar el acceso a la sección crítica:
(Gp:) …
k := k + 1;

(Gp:) sección crítica

(Gp:) LOCK(A);
(Gp:) UNLOCK(A);
(Gp:) A: cerrojo

Secciones críticas

Monografias.com

? Operaciones atómicas de lectura/escritura sobre el cerrojo.
Ejemplo: Test&Set R1,A ? R1 := M(A); A := 1;
? En un entorno SMP, limitar el tráfico es crucial.
La instrucción Test&Set efectúa siempre una escritura, esté el cerrojo abierto o cerrado, y por tanto invalida el bloque en todas las caches ? genera mucho tráfico.
Secciones críticas
lock: T&S R1,A
BNZ R1,lock
RET
unlock: ST A,R0
RET

Monografias.com

Soluciones para reducir el tráfico:
? Test-and-Test&Set
primero mirar y luego intentar entrar
? Temporizaciones entre intentos de entrada
Secciones críticas
lock: LD R1,A
BNZ R1,lock

T&S R1,A
BNZ R1,lock

RET

Monografias.com

Soluciones para reducir el tráfico:
? Load Linked / Store Conditional
Dividir la operación atómica R(M)W en dos operaciones especiales, una de lectura (LL) y una de escritura (SC), que operan junto con un flag hardware.
Secciones críticas
lock: ADDI R2,R0,#1
l1: LL R1,A
BNZ R1,l1

SC A,R2
BZ R2,lock
RET
unlock: ST A,R0
RET

Monografias.com

Soluciones para reducir el tráfico:
? Tickets
Una variable global ordena la entrada a la sección crítica
? Vector de eventos
La entrada a la sección crítica se ordena mediante un vector. Cada proceso va dando paso al siguiente.
Secciones críticas

Monografias.com

? Eventos: Sincronización habitual entre productor y consumidor.
Sincronización: eventos

P1 (productor) P2 (consumidor)
X = F1(Z);
Y = F2(X);
post(A); wait(A);
(Gp:) while (A == 0) {};
(Gp:) A = 1;

post(A,i); wait(A,i);

Monografias.com

? Sincronización global en base a barreras:
flag + contador
BARRERA (BAR, P)
{ bit_sal = !(bit_sal);
LOCK (BAR.lock);
BAR.cont++;
mi_cont = BAR.cont;
UNLOCK (BAR.lock)
if (mi_cont==P) {
BAR.cont = 0;
BAR.flag = bit_sal;
}
else
while (BAR.flag != bit_sal) {};
}
Sincronización: barreras

Monografias.com

? Orden de ejecución de las instrucciones (mem.)
? El problema del orden de ejecución de las instruccio-nes de memoria se conoce como consistencia (visión global del sistema de memoria).
? N procesadores ? no se sabe en qué orden se ejecuta el programa global
? 1 procesador ? el hardware (desorden/desorden) pero sólo hay una unidad de control (se “sabe” lo que se hace).
(3) Consistencia de la mem.

Monografias.com

? La coherencia de los datos también hace referencia al “orden”, pero de una manera más limitada. Indica que los cambios en una determinada variable se reflejarán, en algún momento, en todos los procesadores en el mismo orden.
? Pero nada indica sobre el orden relativo de cambios en variables diferentes!
Consistencia de la mem.

Monografias.com

? La semántica de un programa paralelo está íntimamente ligada al orden local y al orden global.
? Ejemplo (A=B=0):
P1 P2
A = 1; (wr) print B; (rd)
B = 2; (wr) print A; (rd)
Resultados posibles
B,A ? 0,0 / 0,1 / 2,1 2,0 ??
? 2,0 es un resultado posible si P2 decide desordenar sus dos instrucciones, que para él son totalmente independientes!
Consistencia: orden de ej.

Monografias.com

? La semántica del programa paralelo se suele asegurar mediante operaciones de sincronización.
? Ejemplo (A=flag=0):
P1 P2
A = 1; while (flag==0);
flag = 1; print A;
(Gp:) dependencias
wr1 rd1

wr2 rd2

? Pero P2 puede decidir ejecutar primero rd2, porque para él no hay dependencia alguna con la instrucción anterior:
el procesador local no “entiende” la sincronización del programa global!
(Gp:) ¿debería escribir P2 A=1?

Consistencia: orden de ej.

Monografias.com

? La semántica del programa paralelo se suele asegurar mediante operaciones de sincronización.
? Ejemplo (A=flag=0):
P1 P2
A = 1; while (flag==0);
flag = 1; print A;
(Gp:) dependencias
wr1 rd1

wr2 rd2

(Gp:) ¿debería escribir P2 A=1?

? Sólo se respeta la dependencia wr1 ? rd2 (A) si se respeta el orden local:
wr1 >> wr2 y rd1 >> rd2 +
wr2 ? rd1
entonces wr1 ? rd2
Consistencia: orden de ej.

Monografias.com

? Incluso manteniendo el orden local, la no atomicidad de las operaciones de actualización da lugar a problemas.
? Ejemplo (A=flag=0):
P1 P2
A = 1; while (flag==0);
flag = 1; print A;
(Gp:) El mantenimiento de la coherencia indica que los cambios sobre una variable se ven en el mismo orden en todos los procesadores, pero no indica nada sobre el orden de los cambios en diferentes variables.

Puede imprimir A = 0 si P2 ve el cambio en flag antes que el cambio en A.

Consistencia: atomicidad

Monografias.com

? Otro ejemplo (A = B = 0)

P1 P2 P3
A = 1; while (A==0);
B = 1; while (B==0);
C = A;
(Gp:) finalmente, obtenemos C = 0

Consistencia: atomicidad

Monografias.com

? El programador de sistemas paralelos necesita saber cuál es el modelo de consistencia que se aplica, es decir, qué tipo de restricciones existen sobre el orden de ejecución de las instrucciones en cada procesador y sobre la atomicidad global de las operaciones de escritura/lectura sobre variables compartidas.

Veamos los modelos principales.
Consistencia: modelos

Monografias.com

? Extensión del modelo de orden estricto en un solo procesador.

? Un multiprocesador mantiene consistencia secuen-cial si mantiene el orden local de las instrucciones en cada procesador y si el orden global de las instrucciones corresponde a un determinado entrelazado de las instrucciones de cada procesador.
Consistencia secuencial

Monografias.com

? Mantener orden global implica no poder ejecutar ninguna operación de memoria en ningún procesador hasta que no termine completamente la anterior operación iniciada en cualquier procesador y todas sus consecuencias.

Se necesita, además, que las operaciones de memoria sean todas atómicas.
Consistencia secuencial

Monografias.com

? El conjunto de restricciones de la CS es un conjunto suficiente, pero no necesario, por lo que es posible relajar alguna de las condiciones anteriores:
+ orden: rd >> rd rd >> wr wr >> rd wr >> wr
+ atomicidad
? Pero tiene que ser posible imponer en ciertos casos el orden estricto, instrucciones tipo fence.
Consistencia relajada

Monografias.com

Consistencia: resumen

Monografias.com

Consistencia: resumen
(Gp:) orden

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter