Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ndice
ndice
Concepto Realizaciones Consistencia secuencial basada en paginacin Consistencias dbiles ligadas a la sincronizacin Otros modelos de consistencia Modelos basados en lenguajes 3 6 22 50 56 57
ndice
Concepto
Pgina
Caractersticas
Libera al programador de pasar mensajes. No se necesita serializar estructuras de datos
ndice
Fcil compartir estructuras de datos complejas. Slo sencillo y eciente para mquinas homogneas.
Comunicacin implcita los datos se llevan a donde haga falta
ndice
Realizaciones
Basados en hardware: (Firey, Dash)
ndice
Antecesores de la memoria global compartida. Multiprocesadores con bus o redes de interconexin. Gestin por hardware.
Basados en paginacin: (Ivy, Mether)
ndice
A un objeto slo se accede por mtodos. Los mtodos soportan la replicacin, la heterogeneidad, el control de
acceso. Orientada a datos inmutables (normalmente tuplas).
ndice
Pgina
Sincronizacin
Espera activa: (algoritmos de Dekker, Dijkstra, etc, instruccin TESTAND-SET). Cerrojos, semforos, barreras, ... distribuidos ( paso de mensajes). Integrable en el sistema de conservacin de consistencia, para reducir el trasiego de pginas.
ndice
Consistencia
Realizacin trivial es muy ineciente:
Pgina
1. Cada dato est en un solo sitio. 2. Local acceso directo. 3. Remoto mensaje. Realizacin eciente requere rplicas (caches?): 1. Los datos se copian donde se usen. 2. Las actualizaciones se deberan agrupar y retrasar. 3. Las copias pueden tener valores distintos inconsistencia. 4. Debemos denir modelos de consistencia apropiados.
ndice
Pgina
Modelos de consistencia
Contratos entre el software y la memoria: Si el software cumple ciertas reglas la memoria promete trabajar de forma correcta. ...... Para una lectura qu escrituras van a proporcionar el valor?
ndice
Totalmente inconsistente
Las lecturas ocasionan replicacin. Las escrituras se propagan perezosamente, sin ninguna garanta de orden. Leo algo que se haya escrito antes. Ej: recopilacin de datos continuos (rendimiento, meteorolgicos, clculos de relajacin).
ndice
Un ejemplo
a:= 0; b:= 0; __________________________________________________ br:= b; | a:= a+1; ar:= a; | b:= b+1; if (ar >= br) then | print("OK"); | __________________________________________________ Si la actualizacin de b se adelanta a la de a, el clculo es incorrecto.
Memoria global compartida 16 de noviembre de 2004 Pgina: 12 de 59
ndice
ndice
Pgina Pantalla
ndice
Consistencia secuencial
Un objeto replicado es secuencialmente consistente ejecucin un entrelazado de las operaciones de los clientes que verica: 1 Coincide con un posible entre- Si ocurre L(x)a, la ltima eslazado con el objeto sin replicar. critura que ocurri en x fu E (x)a, o no la hubo y el valor inicial de x era a (coherencia de memoria). 2 El orden de las operaciones en el entrelazado es consistente con el orden del programa en que las ejecutaron los clientes.
Pgina Pantalla Imprimir Cerrar Salir
ndice
ndice
Pgina
ndice
Pgina
Opciones de actualizacin
1. Actualizar en escritura: Cada lectura pide una rplica si no la tiene. Cada escritura se multienva a las rplicas. Consistencia secuencial multienvo ordenado totalmente. Las lecturas son baratas. Las escrituras son muy caras. 2. Invalidar en escritura: Cada lectura pide una rplica si no la tiene. Cada escritura invalida las otras rplicas. Permite varias escrituras seguidas ecientemente. Costoso compartir (trasiego). 3. No replicar: Si hay muchas escrituras.
ndice
ndice
Granularidad
Puede ser la variable. Es ms eciente la pgina. De qu tamao?
Pgina Pantalla Imprimir Cerrar Salir
Grande Mucha transferencia de datos por copia. Mucha comparticin falsa. Pequea. Cada transferencia tiene un coste mnimo grande. Demasiada administracin.
ndice
Trasiego (thrashing)
Tiempo til << Tiempo de copias Empeora con invalidacin al escribir. LOOP Modifica(i); END | | | LOOP Usa(i); END
Pgina Pantalla Imprimir Cerrar Salir
Dar prioridad al escritor durante un plazo. Especicar patrones de uso de la memoria compartida.
Memoria global compartida 16 de noviembre de 2004 Pgina: 21 de 59
ndice
Se comparten las direcciones (se pueden almacenar y pasar punteros). Paginacin transparente a los procesos. El SO puede asignar permisos: nada, lectura, lectura/escritura. La violacin de un permiso ocasiona desvo (trap) al SO. El desvo lo atiende el ncleo,
pero puede delegar gestin en proceso de usuario. Compite con la memoria virtual ordinaria.
ndice
Gestin de lecturas
Pgina
Si no se tiene la pgina,
Toma control el sistema operativo. La trae. Ajusta permiso de slo lectura. Se completa la lectura.
Salir
Lecturas sucesivas se hacen localmente. Un intento de escritura dara control al sistema operativo.
Memoria global compartida 16 de noviembre de 2004 Pgina: 23 de 59
ndice
Gestin de escrituras
Si la pgina no est,
La trae. Se invalidan las dems copias. Se ajusta permiso de lectura/escritura. Se completa la escritura.
Si se actualizara al escribir
Si la pgina no est,
ndice
ndice
Salir
ndice
Pgina
ndice
Escrituras
Pgina
ndice
Se conserva owner(p), quitando permiso de escritura. Tambin podra ser owner(p) := Pr . copyset(p) := copyset(p) {Pr }.
Da permiso de lectura a p y completa operacin.
ndice
Protocolos de invalidacin
Cmo se determina owner(p)? Cmo se determina copyset(p)?
Pgina Pantalla Imprimir Cerrar Salir
1. Centralizado: uno tiene owner(p) y ste tiene copyset(p). 2. Reparto esttico: p gestor(p). 3. Gestin distribuida. 4. Multienvo.
Memoria global compartida 16 de noviembre de 2004 Pgina: 30 de 59
ndice
Falta envo de < n(p), acceso > al gestor. El gestor manda < n(p), acceso > a owner(p). Si escritura, el gestor cambia owner(p) a cliente. Peticiones sucesivas se encolan al cliente.
ownerviejo(p) transere p directamente a cliente. Si lectura, actualiza copyset(p) con cliente. Si escritura, manda copyset(p) a cliente, que se encarga de invalidar
con multienvo.
Memoria global compartida 16 de noviembre de 2004 Pgina: 31 de 59
ndice
<p>
<n(p), lectura>
n(p) owner(p)
Gestor
Memoria global compartida 16 de noviembre de 2004 Pgina: 32 de 59
ndice
<p, copyset(p)>
<n(p), escritura>
n(p) owner(p)
Gestor
Memoria global compartida 16 de noviembre de 2004 Pgina: 33 de 59
ndice
Pgina
Distribuir el gestor: gestor(p) (funcin de hash bien conocida). Podra no repartir la carga uniformemente. (Tampoco tolera fallos).
ndice
Falta multienvo de < p, acceso > Responde owner(p): Si escritura, cambia owner(p) a cliente, que recibe p y copyset(p). Si lectura, actualiza copyset(p) con cliente, que recibe p.
Problemas: pueden perderse o duplicarse peticiones en concurrencia.
Prdida de peticin
C1 C2 O
ndice
ndice
ndice
ndice
C2
000
O
001
Ignora peticiones que no conozcan el paso por el que pide: Peticiones y cesiones llevan rv = RVi . Paso de propiedad a i hace RV = rv e incrementa RVi [i]. Peticiones de j a k se encolan en k . Se ignoran peticiones de j con rv [j ] < RVk [j ].
101
000
000
000
000
Salir
001
101
ndice
Transere la propiedad actualiza probOwner(p) al receptor. Invalida p actualiza probOwner(p) al invalidador. Lee pgina p actualiza probOwner(p) al proveedor. Recibe peticin y no la tiene:
ndice
ndice
ndice
ndice
Reemplazo de pginas
Cuando se pide una pgina, puede no haber marco: Qu pgina se reemplaza?
Pgina Pantalla Imprimir Cerrar Salir
Usar algoritmo LRU... Preferir una pgina limpia poseda por otro.
Qu se hace con ella?
Si poseda y duplicada, transferir la posesin. Si no hay copias: Llevarla a disco. Transferirla a otro procesador:
Al origen. Al que ms memoria libre tenga.
Memoria global compartida 16 de noviembre de 2004 Pgina: 44 de 59
ndice
Trasiego (thrashing)
Cmo minimizar copias y transferencias de propiedad? Transparente:
Pgina Pantalla Imprimir Cerrar Salir
Se asigna un plazo para retener la propiedad. Fijo. Observar si se ha accedido (MMU). Observar longitud de colas de peticiones pendientes.
Asisitida:
ndice
Variables compartidas usadas para especicar turnos (espera activa) Instrucciones ordinarias (algoritmos complejos: Dekker, Dijkstra,
etc). Instrucciones indivisibles (TEST-AND-SET).
Mecanismos de alto nivel: Semforos, cerrojos (paso de mensajes implcito). Paso de mensajes explcito.
Memoria global compartida 16 de noviembre de 2004 Pgina: 46 de 59
ndice
TEST-AND-SET
La variable est a 0 si libre y a 1 si ocupado. La instruccin lee y escribe 1. Para entrar mira si estaba a 0, en cuyo caso entra. Para salir se pone a 0. Se comporta como una escritura.
ndice
2. B hace TEST-AND-SET en un bucle. La primera vez se trae copia, invalidando la de A. Las dems veces usa su copia local. 3. A sale de la regin crtica y pone variable a 0. A solicita la pgina con la variable e invalida la copia de B. La pone a 0. B solicita la pgina y, al estar a 0, la pone a 1. B entra en seccin crtica.
ndice
ndice
Normalmente:
ndice
ndice
ndice
Protocolos de consistencia
Actualizacin o invalidacin al escribir.
Pgina
Si puede haber varias rplicas escribibles. Si retrasar actualizaciones o invalidaciones. Si hay propietario jo. Si mltiples escritores. Si slo lectura. ... Complicado para el programador anotar patrones de uso de variables.
ndice
ndice
ndice
ndice
No se pueden modicar no hay varias copias no hay inconsistencia. Se pueden leer, extrayndolos o no. Sincronizan.
Objetos con mtodos sincronizantes:
Slo se accede a los datos por medio de procedimientos. Llevan exclusin mutua implcita. Pueden llevar sincronizacin a largo plazo.
ndice
Objetos: Orca
Object implementation pila; cima: integer; datos: array[0..N-1] of integer; operation apila(e: integer); begin datos[cima]:= e; cima:= cima+1 end; operation dpila(): integer; begin guard cima > 0 do cima:= cima-1; return datos[cima]; od; end;
ndice