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