Sistemas Operativos Distribuidos

Anuncio
Sistemas Operativos Distribuidos
Contenidos del tema
Sistemas Operativos Distribuidos
Memoria
compartida
distribuida
•
•
•
•
•
Introducción
Estrategias de implementación
Aspectos de diseño de DSM
Modelos de coherencia
Ejemplos de implementación de DSM:
– Sistema basado en páginas con coherencia secuencial
– Sistema basado en páginas con coherencia de liberación
• DSM basada en espacios de tuplas
(DSM, Distributed
Shared Memory)
Sistemas Operativos Distribuidos
2
Preámbulo: clasificación de sis. paralelos
• 2 Factores:
Introducción (1/2)
• Multiprocesadores con mem. compartida vs. s. distribuidos:
– mem. centralizada versus distribuida
– mem. privada versus compartida
– HW más complejo y difícilmente ampliable
– SW más sencillo y mejor conocido
• Clasificación:
• Modelo de programación en sistemas con mem. compartida
– Mem. centralizada y compartida → multiprocesadores
– Mem. distribuida y privada → sistemas distribuidos
– Mem. distribuida y compartida → Distributed Shared Memory (DSM)
• Distributed Shared Memory (DSM)
– Llamadas a procedimiento (o invocación de métodos)
– Comunicación mediante datos compartidos
– Sincronización mediante semáforos
• Modelo de programación tradicional en s. distribuidos
– Mediante hardware:
– Paso de mensajes para comunicación y sincronización
• Multiprocesadores NUMA (acceso a memoria no uniforme)
– Mediante software → Objetivo de la presentación
• Nuevo modelo de programación en s. distribuidos
– RPC (o RMI) + DSM
• Incluir software en SD para ofrecer DSM
Sistemas Operativos Distribuidos
3
Fernando Pérez Costoya
José María Peña Sánchez
Fernando Pérez Costoya
José María Peña Sánchez
5- Memoria Compartida Distribuida
Sistemas Operativos Distribuidos
4
Fernando Pérez Costoya
José María Peña Sánchez
1
Sistemas Operativos Distribuidos
Introducción (2/2)
Visión general de la DSM
• Memoria compartida distribuida (DSM)
Distributed shared memory
– Memoria compartida implementada por software
– Simulada mediante paso de mensajes
– Comunicación con datos compartidos y sincronización con semáforos
• Objetivo:
DSM appears as
memory in address
space of process
Process
accessing DSM
– Sistemas fáciles de construir y programar
– Especialmente adecuada para aplicaciones paralelas
• Problemas:
– Rendimiento aceptable requiere múltiples copias en distintos nodos
• Problema de coherencia: Similar a multiprocesadores pero por SW
Physical
memory
Physical
memory
Physical
memory
– Difícil manejar heterogeneidad
Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
Sistemas Operativos Distribuidos
5
Fernando Pérez Costoya
José María Peña Sánchez
Sistemas Operativos Distribuidos
6
Fernando Pérez Costoya
José María Peña Sánchez
DSM basada en páginas
Estrategias de implementación (1/2)
• DSM basada en páginas (p. ej. Ivy, ThreadMarks):
– Extensión de m. virtual que permite solicitar páginas remotas
– Accesos a DSM convencionales (LOAD/STORE)
• Visión de memoria como bytes (no válido para heterogeneidad)
Process accessing
paged DSM segment
– Fallo de página puede implicar solicitarla a máquina remota
• SO notifica fallo a módulo DSM que envía mensaje solicitando página
– Organización del espacio compartido. Alternativas:
• Mapa del proceso dividido en una parte privada y otra compartida
– DSM se encarga de gestionar parte compartida
• Procesos sólo comparten regiones solicitadas explícitamente
Kernel redirects
page faults to
user-level
handler
Kernel
– Región compartidas en mismo rango de direcciones en cada proceso,
sino punteros internos no válidos
Pages transferred over network
– Otros aspectos similares a m. virtual convencional
• P. ej. algoritmos de reemplazo; aunque con matizaciones:
– página expulsada podría enviarse a otra máquina en vez de al disco
Sistemas Operativos Distribuidos
7
Fernando Pérez Costoya
José María Peña Sánchez
5- Memoria Compartida Distribuida
Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
Sistemas Operativos Distribuidos
8
Fernando Pérez Costoya
José María Peña Sánchez
2
Sistemas Operativos Distribuidos
Estrategias de implementación (2/2)
• DSM basada en variables compartidas:
– Sólo se comparten variables marcadas como tal en programa
• Visión de memoria como variables (válido para heterogeneidad)
– Compilador + entorno de ejecución encargados de gestionar
accesos a estas variables (no LOAD/STORE)
– Algunos sistemas permiten a la aplicación calificar las variables:
• write-once, read-mostly, etc.
– Ejemplos: Midway
Aspectos de diseño de DSM (1/3)
• Esquemas alternativos en la gestión de copias:
– Una sola copia:
• El dato va viajando por los distintos nodos según lo acceden
• No hay problema de coherencia pero mal rendimiento
– Múltiples copias de lectura (read-replication)
• Modelo múltiples lectores/único escritor
• Solución más frecuente
– Múltiples copias tanto de lectura como de escritura (full-replication)
• DSM basada en objetos:
– Se comparten objetos
• Visión de memoria como objetos (válido para heterogeneidad)
– Acceso a datos compartidos mediante métodos SET/GET
• Modelo múltiples lectores/múltiples escritores
• Escrituras en mismo orden sobre todas las copias
• Poco usado (Orca)
• Facilita control de accesos
– Ejemplos: Orca, DiSOM
• DSM basada en espacios de tuplas (al final del capítulo)
Sistemas Operativos Distribuidos
9
Fernando Pérez Costoya
José María Peña Sánchez
Sistemas Operativos Distribuidos
10
False-sharing
Aspectos de diseño de DSM (2/3)
• Granularidad de los datos compartidos
– Acceso a dato no presente en su máquina: ¿Qué se solicita?
• Sólo el dato requerido → Puede ser ineficiente
• Unidad mayor que contiene dato → Genera “false-sharing”
Fernando Pérez Costoya
José María Peña Sánchez
• Ejemplo para un sistema DSM basado en páginas, producido
por accesos a A y a B en dos procesadores distintos
• Thrashing
– Procesos compitiendo por dato (realmente o por “false-sharing”)
– Página “viaja” continuamente de procesador a procesador
A
B
• Suele existir un intervalo mínimo de permanencia en un nodo
• Política de escritura:
page n
– Write-update: dato escrito se propaga a copias
page n + 1
• Usado con full-replication. Puede basarse en multicast
• En DSM basado en páginas pueden transmitirse sólo diferencias
– Puede paliar “false-sharing” (Munim y ThreadMarks)
– Write-invalidate: escritura genera invalidación de copias
• Usado con read-replication. Solución más habitual
Sistemas Operativos Distribuidos
11
Fernando Pérez Costoya
José María Peña Sánchez
5- Memoria Compartida Distribuida
Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
Sistemas Operativos Distribuidos
12
Fernando Pérez Costoya
José María Peña Sánchez
3
Sistemas Operativos Distribuidos
Modelos de coherencia
Aspectos de diseño de DSM (3/3)
• Sincronización
– Factible pero ineficiente usar semáforos basados en test-and-set
• Genera mucho tráfico de accesos e invalidaciones superfluas
– Sincronización basada directamente en mensajes
• Localización de datos: ¿dónde están las copias?
– Mediante broadcast
– Lectura devuelve valor de escritura más reciente
– Difícil de implementar en sistemas distribuidos
• Compromiso entre coherencia y rendimiento:
– Modelos de coherencia más “relajados” que coherencia atómica
• Modelo de coherencia:
• Poco escalable
– Gestor mantiene información sobre copias de todos los datos
• “Cuello de botella”, falta de escalabilidad y punto único de fallo
– Varios gestores: cada uno guarda info. sobre subconjunto de datos
• DSM basada en páginas: Reparto dependiendo de número de página
• Modelos de coherencia
Sistemas Operativos Distribuidos
13
Fernando Pérez Costoya
José María Peña Sánchez
Ejemplo de acceso compartido
Procesador 1
• Buen rendimiento requiere múltiples copias de los datos
• Coherencia atómica:
Procesador 2
x = 1;
y = 1;
print z
z = 2;
print x, y
Orden de ejecución real
P1: x = 1;
P2: z = 2;
P1: y = 1;
P2: print x,y
P1: print z
• Las variables valen inicialmente 0
• Análisis de resultados dependiendo del modelo de coherencia
– ¿qué valores se imprimen?
–
–
–
–
Qué garantiza el sistema de memoria a las aplicaciones
Modelos provienen de coherencia de cache en multiprocesadores
Similitud con semántica de uso concurrente en SFD
Hay muchos. Nos centramos en:
• Coherencia secuencial
• Coherencia de liberación
Sistemas Operativos Distribuidos
14
Fernando Pérez Costoya
José María Peña Sánchez
Coherencia secuencial
• El modelo menos relajado (Lamport, 1979)
• “Resultado equivalente a que los accesos a memoria de los
procesadores se ejecutaran en algún orden secuencial
apareciendo las operaciones de cada procesador en el orden
especificado por su programa”.
• Definición similar a la “seriabilidad” de las transacciones
• Todos los procesadores ven accesos a memoria en el mismo
orden que puede ser distinto del tiempo real
• Coherencia atómica:
– P2: {x=1, y=1}; P1: {z=2}
Sistemas Operativos Distribuidos
15
Fernando Pérez Costoya
José María Peña Sánchez
5- Memoria Compartida Distribuida
Sistemas Operativos Distribuidos
16
Fernando Pérez Costoya
José María Peña Sánchez
4
Sistemas Operativos Distribuidos
Coherencia secuencial en el ejemplo
Procesador 1
Procesador 2
x = 1;
y = 1;
print z
z = 2;
print x, y
Orden de ejecución real
P1: x = 1;
P2: z = 2;
P1: y = 1;
P2: print x,y
P1: print z
• No siempre se requiere propagar escrituras inmediatamente
– P. ej. proceso en sec. crítica sólo necesita propagar cambios al salir
• Modelo de coherencia híbrido
– Se distingue entre variables de datos y de sincronización
– Hay varios modelos: de liberación, de entrada, ...
• Coherencia de liberación (Gharachorloo, 1990)
• Algunos resultados válidos adicionales:
– P2: {x=0, y=0}; P1: {z=2}
• Posible orden: z=2; print x,y; x=1; y=1; print z
– P2: {x=1, y=0}; P1: {z=2}
• Posible orden: x=1; z=2; print x,y; y=1; print z
• Algunos resultados inválidos (no hay un orden posible)
– P2: {x=0, y=0}; P1: {z=0}
– P2: {x=1, y=0}; P1: {z=0}
– P2: {x=0, y=1}; P1: {z=2}
Sistemas Operativos Distribuidos
17
Modelos de coherencia híbridos
–
–
–
–
–
Modelo de coherencia híbrido
2 operaciones sobre v. sincro (adquirir y liberar)
Después de adquirir lecturas de v. datos obtienen datos correctos
En liberar escrituras previas a v. datos accesibles a otros nodos
Datos se mantienen incoherentes en ciertas partes del programa
• Accesos fuera de adquirir y liberar: resultado impredecible
– Hay implementaciones “impacientes” y “perezosas”
Fernando Pérez Costoya
José María Peña Sánchez
Coherencia de liberación
Process 1:
adquirir(sync);
// enter critical section
a := a + 1;
b := b + 1;
liberar(sync);
// leave critical section
Process 2:
adquirir(sync);
// enter critical section
print ("The values of a and b are: ", a, b);
liberar(sync);
// leave critical section
Sistemas Operativos Distribuidos
18
Fernando Pérez Costoya
José María Peña Sánchez
Ejemplos de implementación de DSM
• DSM basada en páginas con c. secuencial (Ivy)
• DSM basada en páginas con c. liberación impaciente (Munin)
Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3
© Addison-Wesley Publishers 2000
Sistemas Operativos Distribuidos
19
Fernando Pérez Costoya
José María Peña Sánchez
5- Memoria Compartida Distribuida
Sistemas Operativos Distribuidos
20
Fernando Pérez Costoya
José María Peña Sánchez
5
Sistemas Operativos Distribuidos
DSM con coherencia secuencial (1/2)
• Uso de read-replication e invalidación
• Cada página en un nodo puede estar:
DSM con coherencia secuencial (2/2)
• Si se produce fallo en una escritura y antes inaccesible:
– Inaccesible, R (sólo lectura) o RW (lectura/escritura)
• Múltiples copias de lectura pero una sola de escritura:
– Página puede estar R en varios nodos y en restantes inaccesible
– Página RW sólo en uno y en restantes inaccesible
• Si se produce fallo en una lectura (LOAD):
– Solicita la página a un nodo N poseedor de copia y la marca R
• Si N la tenía RW, N la pasa a R (degradación)
• Si se produce fallo en una escritura (STORE) y antes R:
– Solicita la página a un nodo N poseedor de copia
– La marca RW y envía men. de invalidación a poseedores de copias
• Poseedores de copia la marcan como inaccesible
• Requiere poder localizar poseedores de copias
– Mediante broadcast
– Uso de un único gestor
– Uso de múltiples gestores:
• Cada uno gestiona un subconjunto de las páginas
– La marca RW y envía men. de invalidación a poseedores de copias
• Poseedores de copia la marcan como inaccesible
Sistemas Operativos Distribuidos
21
Fernando Pérez Costoya
José María Peña Sánchez
DSM con c. liberación impaciente (1/2)
• Gestor permite encontrar copias y controla acceso a s. crítica
• Cada página en un nodo puede estar:
– Inaccesible, R (sólo lectura) o RW (lectura/escritura)
Fernando Pérez Costoya
José María Peña Sánchez
DSM con c. liberación impaciente (2/2)
• Si se produce fallo en una escritura y antes R:
– Sólo marcar como RW; no se generan mensajes
• Si se produce fallo en una escritura y antes inaccesible:
– Solicita la página a un nodo poseedor de copia y la marca RW
• En adquirir:
– Proceso P solicita a gestor entrar en la sección crítica
– P bloqueado hasta que gestor le indique cuándo puede entrar
– Entonces, marca R toda página que era previamente RW
• Lecturas (LOAD) y escrituras (STORE) sobre copias locales
• Si se produce fallo en una lectura:
– Solicita la página a un nodo poseedor de copia y la marca R
• Gestor añade proceso a lista de poseedores de copia de esa página
Sistemas Operativos Distribuidos
23
Sistemas Operativos Distribuidos
22
Fernando Pérez Costoya
José María Peña Sánchez
5- Memoria Compartida Distribuida
• Gestor añade proceso a lista de poseedores de copia de esa página
• En liberar:
– Por cada página P marcada como RW
• Mensajes de invalidación a poseedores de copias
– Poseedores de copia la marcan como inaccesible
• Notifica a gestor que el proceso es el único poseedor de copia de P
– Proceso indica a gestor que abandona la sección crítica
• Si otro esperando, gestor le indica que entre en s. crítica
Sistemas Operativos Distribuidos
24
Fernando Pérez Costoya
José María Peña Sánchez
6
Sistemas Operativos Distribuidos
Linda: DSM con espacios de tuplas
• Idea original de Carriero y Gelernter (1985)
Linda: Operaciones sobre tuplas
• out(tupla): Añade tupla al espacio de tuplas; no bloqueante
• in(patrón): Busca tupla que encaje en patrón y la extrae
– Independiente del lenguaje
– JavaSpaces está basado en esta idea
• Modelo de memoria compartida en Linda: espacio de tuplas
• Tupla: secuencia de campos con tipo
– Ejemplo: (“hola”, 7, 3.14, “adios”)
– existen de forma independiente a sus creadores
– se acceden asociativamente
• Modelo engloba comunicación y creación de procesos:
– tupla de datos: de carácter pasivo (base de la DSM)
– tupla de proceso: de carácter activo (creación de procesos)
– si varias → cualquiera; si ninguna → se bloquea
– Ejemplo: in(“hola”, ?i, ?f, “adios”) → (“hola”, 7, 3.14, “adios”)
• rd(patrón): Igual que in pero la tupla no se extrae
• eval(tupla): Añade tupla de proceso al espacio de tuplas
– Al insertar se activa proceso que la convertirá en tupla de datos al
terminar la ejecución de la función
• incluye función en alguno de los campos; al insertarla en espacio de
tuplas se genera proceso que ejecuta función; al terminar se convierte
en tupla de datos donde resultado de función sustituye a función
Sistemas Operativos Distribuidos
25
Fernando Pérez Costoya
José María Peña Sánchez
Sistemas Operativos Distribuidos
26
Fernando Pérez Costoya
José María Peña Sánchez
Linda: Ejemplos de uso
• Semáforo:
– Bajar semáforo: in(“sem”)
– Subir semáforo: out(“sem”)
• Cliente/servidor:
servidor() {
cliente(){
int indice=1;
int indice;
out(“turno”, indice);
.........
while(1) {
in(“turno”, ?indice);
in(“peticion”, indice, ?pet);
out(“turno”, indice+1);
.........
out(“peticion”, indice, pet);
out(“respuesta”,indice++,res);
in(“respuesta”,indice,?res);
} }
}
Sistemas Operativos Distribuidos
27
Fernando Pérez Costoya
José María Peña Sánchez
5- Memoria Compartida Distribuida
7
Descargar