Plataforma para una memoria virtual compartida distribuida
128
0
0
Texto completo
(2) MISC-02-2-19. PLATAFORMA PARA UNA MEMORIA VIRTUAL COMPARTIDA DISTRIBUIDA. ALBA EUGENIA URREA CARDOZO. Trabajo de investigación presentado para optar el titulo de Magíster en Ingeniería de Sistemas y Computación. Director RAFAEL GOMEZ. UNIVERSIDAD DE LOS ANDES DEPARTAMENTO DE SISTEMAS Y COMPUTACIÓN MAGISTER EN INGENIERIA DE SISTEMAS Y COMPUTACION BOGOTA 2003.
(3) MISC-02-2-19. Bogotá, julio 18 de 2003. Ingeniero Rodrigo Cardoso Director Departamento Ingeniería de Sistemas y computación Universidad de los Andes. Cordial saludo,. Por medio de la presente me permito poner a Ud. en consideración mi trabajo titulado “Plataforma para una memoria virtual compartida distribuida”, con el cual aspiro a obtener el titulo de Magíster en Ingeniería de Sistemas y Computación.. Respetuosamente,. Alba Eugenia Urrea Cardozo Código 200117536.
(4) MISC-02-2-19. AGRADECIMIENTOS. El autor expresa sus agradecimientos a:. El Departamento de Sistemas y Computación de la Universidad de los Andes por su colaboración durante el desarrollo de la investigación.. Rafael Gómez, asesor del trabajo de investigación, por sus valiosas orientaciones.. Francisco Rueda,. jurado del trabajo de investigación, por sus valiosas. orientaciones.. Elkin Burgos, jurado del trabajo de investigación, por sus valiosas orientaciones.. Moisés David Rincón D'Hoyos, jurado del trabajo de investigación, por sus valiosas orientaciones..
(5) MISC-02-2-19. CONTENIDO Pag INTRODUCCIÓN. 2. 1.. OBJETIVOS. 5. 1.1.. OBJETIVOS GENERALES. 5. 1.2.. OBJETIVOS ESPECIFICOS. 5. 2.. MARCO TEÓRICO. 6. 2.1.. POLÍTICAS DE REMPLAZO DE PAGINAS. 10. 2.1.1. Estrategia FIFO. 12. 2.1.2. Estrategia LRU. 12. 2.1.3. Estrategia del reloj. 13. 2.1.4. Estrategia del working-set. 16. 2.1.5. Estrategia de carga de binarios en demanda. 17. 2.2.. MODELOS DE CONSISTENCIA PARA DSM. 18. 2.2.1. Consistencia causal. 20. 2.2.2. Consistencia entry. 21. 2.2.3. Consistencia PRAM. 21. 2.2.4.. Consistencia release. 21. 2.2.5.. Consistencia estricta o atómica.. 22. 2.2.6.. Consistencia débil. 22. 2.3.. ALGORITMOS DE IMPLEMENTACION DSM. 23. 2.4.. COHERENCIA DE PROTOCOLOS. 25. 2.4.1.. Write-invalidation. 25. 2.4.2.. Write-update. 26. 2.5.. DISEÑO DSM. 26. 2.5.1.. DSM basada en páginas. 27.
(6) MISC-02-2-19 2.5.2. DSM basada en objetos. 29. 3.. ALGUNOS SISTEMAS QUE IMPLEMENTAN MEMORIA VIRTUAL COMPARTIDA DISTRIBUIDA DSVM. 31. 3.1.. ADMINISTRACIÓN DE MEMORIA. 32. 3.1.1.. Sistema Advice. 32. 3.1.2.. Sistema IVY. 35. 3.1.3.. Sistema Mirage. 36. 3.1.4.. Sistema PiSMA. 37. 3.1.5.. JIAJIA. 42. 3.1.6.. Sistema off. 46. 3.2.. MANEJO DE PROCESOS EN LOS SISTEMAS VISTOS. 48. 4.. MODELO DE MEMORIA EN LINUX. 56. 4.1.. DIRECCIONAMIENTO EN MICROPROCESADORES INTEL. 56. 4.2.. EL MANEJO DE MEMORIA EN LINUX. 63. 4.2.1.. Tablas de páginas. 64. 4.2.2.. Fallo de página. 65. 4.2.3.. Estructuras de implementación de memoria virtual. 69. 4.3.. PROCESOS EN LINUX. 71. 5.. MODELO DE MEMORIA PROPUESTO PARA LA PLATAFORMA MAPANA. 77. 5.1.. ARQUITECTURA DEL MODELO DE MEMORIA. 77. 5.2.. IMPLEMENTACIÓN DEL MODELO DE MEMORIA. 82. 5.2.1.. Módulos de desarrollo del modelo de memoria para Mapaná. 85. 5.2.1.1.. Peticiones de página. 85. 5.2.1.2.. Peticiones de creación de espacio de direcciones remoto. 90. 6.. 99. 6.1.. CONFIGURACION Y PRUEBAS DEL MODELO DE MEMORIA PARA MAPANA CONFIGURACIÓN. 99. 6.2.. EJECUCION DE PRUEBAS. 102. CONCLUSIONES. 107. BIBLIOGRAFIA. 109. ANEXO 1. 112.
(7) MISC-02-2-19. LISTA DE FIGURAS. Figura 2.1. Modelo abstracto de Memoria virtual. 9. Figura 2.2.. Ordenamiento de las páginas en la estrategia del reloj. 14. Figura 2.3.. Operaciones relacionadas causalmente. 20. Figura 3.1.. Modelo de memoria virtual compartida distribuida en Advice. 34. Figura 3.2.. Arquitectura PiSMA. 38. Figura 3.3.. Organización de la memoria en JIAJIA. 43. Figura 3.4.. La DTLB de off. 48. Figura 4.1.. Traducción de direcciones. 57. Figura 4.2.. Traducción de una dirección virtual. 60. Figura 4.3.. Relación de estructuras de la memoria virtual en Linux. 64. Figura 4.4.. Estructura de la memoria virtual de un proceso Linux. 75. Figura 5.1.. Algoritmo de servidor central. 79. Figura 5.2.. Composición de una máquina virtual. 80. Figura 5.3.. Creación de procesos en Mapaná. 84. Figura 5.4.. Traducción de una dirección remota. 87. Figura 5.5.. Módulos y programas de usuario para creación de procesos parientes. 96. Figura 5.6.. Módulos de manejo de fallo de página remoto. 97. Figura 5.7.. Módulos de implementación modelo de memoria Mapaná. 98.
(8) MISC-02-2-19. RESUMEN. El presente trabajo trata los aspectos más importantes que se deben tener en cuenta al implementar un modelo de memoria virtual compartida distribuida, principalmente se ha desarrollado como una base para implantar un administrador de memoria remota para Mapaná.. Mapaná es una capa lógica sobre el sistema operativo Linux que crea una máquina paralela virtual sobre una red de computadores homogéneos, permitiendo la distribución de procesos sobre la red así como compartir código y datos.. Atendiendo estas características de la plataforma, cada espacio de memoria de un proceso tiene asociadas páginas remotas que, a medida que se van necesitando, se ubican y entregan a través de un despachador o servidor de páginas. El modelo de memoria virtual compartida distribuida para Mapaná implementa las necesidades descritas logrando que procesos en paralelo puedan ejecutarse en máquinas físicas independientes..
(9) MISC-02-2-19. INTRODUCCIÓN. En la actualidad, muchas aplicaciones, sean científicas, de inteligencia artificial, de minería de datos, o de realidad virtual, entre otras, requieren resolver problemas de gran tamaño y alta complejidad de cálculo. Para resolver este tipo de problemas es necesario utilizar máquinas poderosas y con alta disponibilidad de recursos, sin embargo, este tipo de máquinas son costosas. Una alternativa es usar computadores en red, aún cuando su configuración puede ser difícil e incómoda de programar, lleva a la idea de desarrollar una plataforma como Mapaná, que implemente una máquina paralela virtual.. Mapaná es una capa lógica sobre el sistema operativo y se ejecuta en una red de computadores homogéneos ofreciendo al usuario la idea de que todo se está ejecutando en una sola máquina física multiprocesador (con memoria compartida).. Gracias al planteamiento de máquina paralela con memoria compartida y, por ende, al modelo de memoria virtual compartida distribuida, se tienen varias características como son:. •. Los lenguajes de programación sobre la plataforma tienen dos alternativas de comunicación: paso de mensajes y memoria compartida. 2.
(10) MISC-02-2-19. •. El código puede migrar de acuerdo con la demanda: cuando un proceso necesite ejecutar parte de éste código, no es necesario portarlo explícitamente a la otra máquina; la migración se realiza implícitamente, de ésta forma no existen los problemas de cómo dividir el código.. •. La memoria virtual es la misma para todos los procesos de una máquina virtual, esto implica que todos los procesos se refieren a una misma página en cualquier momento, y por consiguiente se pueden cargar más datos en memoria que si se tuviera una sola máquina física.. El modelo de memoria propuesto para Mapaná ingresa a la lista de administradores de memoria remota implementados en sistemas como off (Ballesteros, 1998), Advice (Ballesteros, 1996) y JIAJIA (Hu, 1999) entre otros, que sirven de inspiración para diseñar un modelo de memoria como parte del kernel del sistema operativo Linux.. Los estudios de sistemas de memoria virtual compartida y distribuida permiten observar que el modelo de administración de memoria ha impulsado el desarrollo de los sistemas distribuidos y por ello es objeto de estudio en éste trabajo de investigación, aquí se plantea un modelo de memoria con las características ya mencionadas, es decir, una memoria virtual compartida y distribuida, la cual es implementada para llevar a cabo la futura administración de memoria remota en Mapaná.. Este documento presenta los siguientes capítulos: 3.
(11) MISC-02-2-19. Capitulo I: Objetivos, general y especificos del trabajo de investigación.. Capitulo II: Marco Teórico, el cual describe algunas de las políticas de reemplazo de páginas, los modelos de consistencia de memoria compartida distribuida o DSM más conocidos, los algoritmos de implementación de DSM, coherencia de protocolos y algunos aspectos de diseño de memoria compartida distribuida.. Capitulo III: Algunos sistemas que implementan memoria virtual compartida distribuida MVCD, en donde se presenta una breve descripción de algunos sistemas que han implementado este tipo de memoria.. Capitulo IV: Modelo de memoria en Linux, en él se describe el modelo de memoria implementado por Linux en cuanto a funciones y estructuras necesarias para su administración.. Capitulo V: Modelo de memoria propuesto para la plataforma mapaná, el cual trata los aspectos necesarios para llevar a cabo un administrador de memoria virtual compartida distribuida que pueda ser utilizado en la plataforma Mapaná. Capitulo VI: Configuración y pruebas del modelo de memoria, en donde se describen brevemente los aspectos tenidos en cuenta para probar el modelo de memoria virtual compartido distribuido.. Capitulo VII: Conclusiones, se presentan también algunas posibles mejoras al modelo de memoria resultado de este trabajo. 4.
(12) MISC-02-2-19. 1. OBJETIVOS. 1.1 OBJETIVOS GENERALES. Diseñar e implementar el modelo de memoria virtual compartida distribuida para la plataforma virtual paralela Mapaná con apoyo en el código libre del sistema operativo Linux.. 1.2. OBJETIVOS ESPECÍFICOS. Estudiar modelos teóricos de sistemas existentes que implementan el modelo de memoria virtual compartida y/o distribuida como apoyo en el proceso de toma de decisiones para la plataforma paralela Mapaná.. Analizar el modelo de memoria implementado por Linux, en cuanto a estructuras para la administración del espacio de direcciones, políticas de intercambio de páginas, características de creación de procesos y funciones de comunicación.. Realizar las modificaciones adecuadas a los contenidos almacenados en las estructuras de memoria del kernel de Linux, para adaptarlas a las necesidades actuales e incluir nuevas funciones que apoyen estas modificaciones.. 5.
(13) MISC-02-2-19. 2. MARCO TEÓRICO. Desde la aparición de los primeros computadores, surgió la necesidad de disponer de más memoria de la que existía físicamente en el sistema, el subsistema de gestión de memoria se convierte en una de las partes más importantes del sistema operativo. Los procesos necesitan compartir datos y código y se da inicio a la distribución y al paralelismo, lográndose un avance hacia los sistemas distribuidos.. La memoria virtual surge principalmente ante la necesidad de ejecución de aplicaciones que requieren más memoria de la física disponible. Como la memoria física se hace insuficiente, el sistema operativo debe emular una memoria de mayor tamaño y para ello ubica la mayor parte de las páginas de los procesos en disco. La memoria virtual actúa como una capa lógica entre las peticiones de memoria de las aplicaciones y la unidad de administración de memoria MMU. Los propósitos de la memoria virtual son: •. Permitir ejecución concurrente de procesos. •. Permitir que se puedan ejecutar programas con necesidades de memoria más grandes que la del tamaño real. 6.
(14) MISC-02-2-19. •. Dejar que un proceso ejecute un programa para el cual el código ha sido cargado parcialmente.. •. Asignar a cada proceso una porción de memoria física a la que pueda acceder. •. Permitir la relocalización de los programas, es decir, que pueden ser localizados en cualquier parte de la memoria física.. El componente principal de la memoria virtual es su espacio de direcciones virtual, el kernel y la MMU trabajan en conjunto para localizar la dirección física a la cual está asociada una dirección virtual.. Cuando se crea un proceso se le asigna su espacio de direcciones, dicho espacio contiene el conjunto de direcciones virtuales que el proceso puede referenciar. El espacio de direcciones está representado por una lista de descriptores de área de memoria, estas áreas contienen:. •. El código ejecutable del programa. •. Los datos inicializados del programa. •. Los datos no inicializados del programa. •. La pila del programa. •. El código ejecutable y datos de las librerías necesarias. •. El heap (memoria dinámica) (Bovet & Cesati, 2001, 33). 7.
(15) MISC-02-2-19. Para dar solución a la administración ineficiente de la memoria surgieron dos teorías:. La asignación estática, que asume que se puede predecir la disponibilidad de recursos de memoria y las referencias a ella.. La asignación dinámica, que aumenta o disminuye los recursos de la memoria de acuerdo con las necesidades de los programas, con la memoria virtual se hace uso de este tipo de asignación.. Un programa genera direcciones lógicas (virtuales) consistentes de un número de página lógica más la localización dentro de la página, estas direcciones son traducidas a una dirección de memoria física a través de un Mapeador.. Si la página está en memoria, el mapeador sustituye el número de marco de página física por el número lógico.. Si la página no está presente en memoria física ocurre un fallo y la página es leída en un marco de memoria física desde el almacenamiento secundario (disco).. 8.
(16) MISC-02-2-19. La figura 2.1 describe el modelo abstracto de memoria virtual.. Mapeador. CPU. Memoria Física. Dirección lógica + localización en la página. Tabla de páginas Marco de página. Página lógica no está presente Almacenamiento secundario. Figura 2.1. Modelo abstracto de Memoria virtual. La implementación de la tabla de páginas es vital para la memoria virtual, cada referencia de memoria debe estar presente en una entrada en la tabla de páginas, algunos de los elementos de dicha tabla se guardan en registros TLBs (Translation Lookaside Buffers) que se conocen más comúnmente como memoria asociativa. Cada uno de los registros de la memoria asociativa guarda un código de acceso (una clave que representa la página lógica y un valor que representa la dirección física de la página lógica) para indicar su presencia en la memoria física. Los registros TLBs son costosos así que las páginas de uso más frecuente son las que deben estar allí.. 9.
(17) MISC-02-2-19. El desempeño de la memoria virtual depende: •. Del número de fallos de página que un proceso puede necesitar.. •. De la relación entre referencias.. •. De las políticas de remplazo, estas son vitales en la eliminación del thrashing1.. 2.1. POLITICAS DE REMPLAZO DE PAGINAS. Las políticas de reemplazo son necesarias en un ambiente de memoria virtual debido a la paginación por demanda, ya que el sistema operativo debe decidir en qué página presente debe copiar una página faltante requerida.. En una política basada en modo local, una transacción remplazará páginas desde su partición asignada, su necesidad de acceder a la memoria no afectará a las otras transacciones que usan otras particiones cuidando así el límite del thrashing. (Rincón, 2001). En una política basada en modo global, todas las páginas de memoria están disponibles a todas las transacciones, una transacción puede ocupar suficiente memoria como para provocarle a otra transacción un fallo de página causando thrashing. (Rincón). 10.
(18) MISC-02-2-19. Otras formas para prevenir el thrashing son la estrategia working set, prepaginación de partición de transacción e incrementando el tamaño de la página.. Toda la dificultad de la paginación por demanda está en decidir qué páginas conviene llevar a disco cuando la memoria se hace escasa. La idea es que la página que se lleve a disco debe causar un fallo de página lo más tarde posible. Por lo tanto se puede deducir que el sistema de paginación ideal debe llevar a disco aquella página que no será usada por el periodo de tiempo más largo posible.. El kernel no puede predecir por cuanto tiempo una página permanecerá sin ser referenciada, por lo que es necesario recurrir a estrategias que se aproximen al caso ideal. Estas estrategias se denominan estrategias de remplazo de páginas y son realizadas por el kernel del sistema operativo. En Linux quien se encarga de verificar qué páginas pueden ser intercambiadas o no es el demonio de swapping.. Se pueden tener estimativos del rendimiento de la paginación por demanda de acuerdo con los tiempos de acceso a memoria principal y a los tiempos de acceso con fallo de página: Tiempo efectivo de acceso a memoria principal = (1-p)(tiempo de acceso a memoria principal) + p(tiempo de acceso de fallo de páginas) Donde p es la probabilidad de fallo de página. 1. El thrashing ocurre cuando las páginas continuamente son copiadas a disco y leídas manteniendo al sistema operativo ocupado lo cual no le permite hacer trabajo útil. Traducido como hiper-paginación.. 11.
(19) MISC-02-2-19. Un fallo de cada mil: (.999)(100ns) + (.001)(25ms) = 2500ns, un factor de 25. Para una degradación de solamente 10% aplicado al tiempo de acceso efectivo a memoria principal significa que no ocurre más de un fallo de página en 2.500.000 accesos a memoria principal. (MONGUE). Algunas de las estrategias más conocidas se describen brevemente a continuación.. 2.1.1 Estrategia FIFO. La primera página cargada en memoria es la elegida para remplazar. Es una estrategia muy sencilla de implementar, la tasa de fallos de página es muy alta, por lo que ningún sistema la utiliza para paginación por demanda. Existen variaciones a esta estrategia como la LIFO (Last In First Out), donde se remplaza la última página accedida y la LFU (Least Frequently Used), en la cual se. remplaza. la. página. menos. accedida,. es. decir. la. más. antigua.. (http://cne.gmu.edu/modules/dsm). 2.1.2 Estrategia LRU. La página que ha permanecido por más tiempo sin ser accedida es la elegida a remplazar. Esta iniciativa se basa en que mientras más tiempo permanece una página sin ser accedida, menos probable es que se acceda en el futuro inmediato. 12.
(20) MISC-02-2-19. Es necesario mantener disponible la información del instante en que fue accedida cada página para poder conocer la que se remplazará.. Linux utiliza la estrategia del uso menos reciente LRU (Least Recently Used) para escoger las páginas a ser intercambiadas o descartadas del sistema, llamado también paginación por antigüedad. Linux implementa dos listas, una para páginas activas (páginas accedidas) y otra para páginas inactivas.. 2.1.3 Estrategia del reloj. También es llamada algoritmo de la segunda oportunidad. (MONGUE, 2001) Esta estrategia es una aproximación de LRU. El fundamento es que no es necesario escoger exactamente la página LRU, sino que es suficiente elegir una página que lleva bastante tiempo sin ser accedida.. La estrategia usa el bit de acceso de la tabla de páginas que tiene un valor de 1 cuando la página es accedida. Este bit es consultado cuando se estima que ha transcurrido el tiempo suficiente como para que aquella página sea remplazada si no ha sido accedida, es decir si el bit de acceso está en 0.. La estrategia del reloj ordena las páginas físicas circularmente como si fueran los minutos de un reloj (ver figura 2.2). Un puntero señala en cada instante una de las páginas. Inicialmente todas las páginas parten con el bit de acceso en 0. Luego de 13.
(21) MISC-02-2-19. cierto tiempo algunas páginas habrán sido accedidas y por lo tanto su bit pasa a 1.. Página física Puntero. Figura 2.2. Ordenamiento de las páginas en la estrategia del reloj. En esta estrategia cuando ocurre un fallo de página se ejecuta el siguiente procedimiento: 1. Mientras el bit de acceso de la página apuntada sea 1: A. Colocar el bit de acceso en 0. B. Avanzar el puntero en una página. 2. Si la página apuntada tiene su bit de acceso en 0, ella es elegida para ser remplazada, es decir se lleva a disco, lo que libera una página física o marco de página. La página física se usa para cargar la página que causó el fallo de página. 3. Avanzar el puntero en una página.. La idea es que la página elegida para ser remplazada no ha sido accedida durante una vuelta completa del reloj. La estrategia considera que este tiempo es suficiente como para suponer que la página no será accedida en el futuro inmediato. 14.
(22) MISC-02-2-19. Una situación especial se produce cuando todas las páginas tienen el bit de acceso en 1 y por lo tanto el puntero avanza una vuelta completa antes de encontrar el primer bit de acceso en 0, esto sucede cuando ha trascurrido mucho tiempo sin que se hayan presentado fallos de página y todas las páginas alcanzan a ser accedidas. Esto no es realmente un problema, puesto que ocurre precisamente cuando la tasa de fallos de página es muy baja.. Esta estrategia es fácil de implementar, funciona muy bien con un solo proceso. En caso de varios procesos, la estrategia se comporta razonablemente en condiciones de carga moderada, pero se comporta desastrosamente cuando la carga es alta.. El problema de la estrategia del reloj es que puede provocar el fenómeno de thrashing. Este fenómeno se caracteriza por una tasa elevadísima de fallos de página que hace que ningún proceso pueda avanzar. Una vez que un sistema cae en el fenómeno de thrashing, es muy difícil que se recupere. La única solución es detener algunos procesos.. El demonio de intercambio de Linux utiliza el algoritmo del reloj para intercambiar las páginas compartidas. (Bovet & Cesati). 15.
(23) MISC-02-2-19. 2.1.4 Estrategia del working-set. Esta estrategia combina la paginación por demanda con el intercambio a disco, eliminando el problema del thrasing. Cuando un programa está en ejecución, Linux crea el working-set para él, con lo cual se favorece a un subconjunto de páginas. Cada proceso mantiene un mínimo de páginas que garantiza que puede correr razonablemente, con una tasa baja de fallos de página. Este mínimo de páginas se denomina working-set y representa el conjunto de páginas virtuales de un proceso que han sido accedidas en los últimos segundos de tiempo virtual de dicho proceso.. El tamaño del working-set de un proceso depende de tres factores: 1. La localidad de los accesos que haga el proceso a la memoria. Mientras mejor sea la localidad menor será el tamaño del working-set y por lo tanto menos memoria física necesitará el proceso para correr eficientemente. Este es un factor que depende únicamente de las características del proceso. El sistema operativo no puede controlar este factor.. 2. El tiempo ∆t entre cálculos del working-set. Mientras mayor sea esta cifra, mayor será la probabilidad de que una página haya sido accedida y por lo tanto mayor será el working-set. Este factor si debe ser controlado por el planificador de páginas del sistema operativo. 16.
(24) MISC-02-2-19. 3. El tamaño de la página. Si se considera el tamaño en bytes del working-set (resultado de multiplicar el número de páginas por el tamaño de una página), a menor tamaño de página, menor es el tamaño del working-set. Esto significa que el proceso necesita menos memoria física para ejecutarse eficientemente. Sin embargo,. al. disminuir el tamaño de página aumenta el número de las páginas y por lo tanto aumenta el sobrecosto asociado al cálculo de los working-set, perjudicando el desempeño de un sistema, así que es muy importante determinar el tamaño adecuado para las páginas. Esta es una decisión que enfrenta el diseñador de la arquitectura, quien es el que fija este valor.. La idea es entonces aumentar o disminuir el valor de ∆t para ajustar la tasa de fallos de página a un nivel fijado como parámetro del sistema. Si se aumenta ∆t, aumenta el tamaño del working-set y entonces disminuye la tasa de fallos de página.. 2.1.5 Estrategia de carga de binarios en demanda. Al lanzar un proceso no es necesario cargar su binario de inmediato en la memoria física. La carga de binarios en demanda consiste en cargar progresivamente las páginas de un binario a medida que el proceso las necesita.. El algoritmo se ejecuta de la siguiente forma: 17.
(25) MISC-02-2-19. 1. Se construye la tabla de páginas del proceso con todas sus páginas invalidas, o sea con el bit de validez en 0. 2. Se destina un bit de los atributos de cada página para indicar que todas las páginas se encuentran en el binario. Además en el descriptor de proceso se reserva un campo para el archivo que contiene el binario.. 3. A medida que el proceso se ejecuta, se producen fallos de página. El administrador de páginas debe consultar entonces los atributos para determinar en qué lugar se encuentra cada página. En el caso de estar en el binario, la página se carga del archivo binario.. El objetivo de esta técnica es mejorar el tiempo de respuesta al cargar binarios de gran tamaño.. 2.2. MODELOS DE CONSISTENCIA PARA DSM. La memoria compartida distribuida DSM (Distributed Shared Memory) es un modelo que permite a los programas acceder a los datos en memoria virtual tradicional, esto significa principalmente que las aplicaciones paralelas pueden acceder directamente a los datos compartidos, estos datos se van a mover entonces entre la memoria secundaria y la memoria principal de los diferentes nodos.. Cada nodo contiene páginas que pueden ser accedidas local o. remotamente, por ello cuando una aplicación hace referencia a una página 18.
(26) MISC-02-2-19. remota, ella debe ser recuperada desde el nodo propietario, el cual a su vez puede tenerla en disco o en memoria.. Los sistemas DSM cuentan con replicación de datos compartidos y permiten acceso concurrente a muchos nodos. (CNE Tutorial Modules Central) Pero un modelo compartido lleva consigo problemas de consistencia en los datos, una lectura debe proporcionar siempre la información de la última escritura, por ello aparecen los modelos de consistencia. Un modelo de consistencia es un contrato entre el software y la memoria, si el software cumple ciertas reglas la memoria promete trabajar de forma correcta.. Los modelos de consistencia permiten controlar la concurrencia en los accesos a los datos, para el programador sería un problema que estos accesos no se ejecuten en el orden en que se hicieron, por lo que es necesario garantizar la coherencia en los datos.. Algunos de los modelos de consistencia básicos son: 1. Causal 2. Entry 3. PRAM y consistencia de procesador 4. Release 5. Estricta 6. Débil. 19.
(27) MISC-02-2-19. 2.2.1 Consistencia causal. Se ven en el mismo orden las operaciones causalmente relacionadas. Hay distinción entre eventos que están relacionados causalmente y los que no. Por ejemplo un proceso P1 escribe en una variable x, entonces P2 lee x y escribe a y. La lectura de x y la escritura de y están relacionadas causalmente, porque el cálculo de y puede tener dependencia del valor leído de x por el proceso P2 (el valor escrito por P1). De otro lado si dos procesos espontánea y simultáneamente escriben dos variables, estas no están causalmente relacionadas. Cuando hay una lectura seguida de una escritura, los dos eventos están relacionados causalmente (ver figura 2.3). Las operaciones que no están causalmente relacionadas se llaman concurrentes. Para que una memoria sea considerada causalmente consistente debe obedecer a la siguiente condición: escrituras relacionadas causalmente deben ser vistas por todos los procesos en el mismo orden. Escrituras concurrentes pueden ser vistas en un orden diferente en máquinas diferentes. (Tanembaum, 321). P1. escribe. x lee. P2. escribe. Operaciones relacionadas causalmente y. Figura 2.3. Operaciones relacionadas causalmente. 20.
(28) MISC-02-2-19. 2.2.2 Consistencia entry. Es usado para secciones críticas2, requiere que el programador adquiera. el. acceso de entrada al inicio y lo libere al final de cada sección crítica respectivamente. Este modelo necesita que cada variable ordinaria compartida sea asociada con alguna variable de sincronización tal como un candado o una barrera. Cuando se adquiere un acceso de entrada sobre una variable de sincronización solamente esas variables ordinarias compartidas guardadas por esa variable de sincronización son consistentes. (Tanembaum). 2.2.3.Consistencia PRAM. Se ven en el mismo orden las escrituras del mismo procesador. La consistencia PRAM está sujeta a escrituras hechas por un sólo proceso son recibidas por todos los demás procesos en el orden en el cual fueron tratadas, pero escrituras de diferentes procesos pueden ser vistas en un orden diferente por procesos diferentes. (Tanembaum). 2.2.4. Consistencia release. En la consistencia débil cuando una variable de sincronización es accedida, la memoria no sabe que esto se está haciendo, de ahí que deba tomar las acciones. 2. Cuando cualquier sección de código debe ser terminada por cada proceso que lo inició antes de que otro proceso pueda entrar.. 21.
(29) MISC-02-2-19. requeridas para escritura o lectura de las variables compartidas, esto es asegurar que todas las escrituras iniciadas localmente se completen como también las escrituras de otras máquinas. Para saber cuando se ha entrado o salido de una sección critica se deben manejar dos clases de variables de sincronización. Este modelo suministra estas dos clases de accesos. Un mensaje de acceso de entrada es usado para decir al sistema de memoria que se está a punto de entrar en una región crítica, un mensaje de liberación indica que se ha salido de una región crítica. Estos accesos pueden ser implementados, uno u otro, como variables u operaciones especiales. (Tanembaum). 2.2.5. Consistencia estricta o atómica.. Definida por “cualquier lectura a una localidad de memoria retorna el valor x almacenado por la más reciente operación de escritura de x”. En resumen cuando la memoria es estrictamente consistente, todas las lecturas subsiguientes desde esa localidad ven el nuevo valor, después del cambio las lecturas son hechas por los procesos que estaban leyendo en la nueva localidad. Similarmente, si una lectura es hecha se obtiene entonces el valor concurrente. (Tanembaum). 2.2.6. Consistencia débil. Aunque PRAM es un modelo que ofrece mayor desempeño que modelos más poderosos, ellos son limitados a muchas aplicaciones porque requieren que las 22.
(30) MISC-02-2-19. escrituras originarias de un sólo proceso sean vistas en orden por todas partes. No todas las aplicaciones requieren cada vez ver todas las escrituras. Aun cuando se supone que otros procesos no tocan las variables hasta que el primer proceso ha abandonado su sección crítica, la memoria no tiene forma de conocer cuando un proceso está en una sección crítica y cuando no, así que tiene que propagar las escrituras a todos. Para mejorar esta situación los accesos a las variables de sincronización son secuencialmente consistentes, no se permite el acceso a una variable de sincronización hasta que todas las escrituras previas se completen en todos lados y no se permiten accesos a datos (lectura o escritura) hasta que todos los accesos previos a las variables de sincronización han sido ejecutados. (Tanembaum). 2.3. ALGORITMOS DE IMPLEMENTACION DSM. Estudios recientes sobre DSM han demostrado que este modelo puede competir con el paso de datos en sistemas distribuidos dispersamente acoplados. Los algoritmos para implementar DSM se clasifican en migración y replicación tal como se resume en la tabla 2.1 (CNE Tutorial Modules Central).. 23.
(31) MISC-02-2-19. No replica. Replica. Algoritmo de Servidor Central. Algoritmo de replicación completa. No migra Los datos compartidos se distribuyen Permiten múltiples accesos de lectura al entre uno o varios servidores, desde mismo tiempo usando accesos locales. donde se ejecutan los accesos a los Los datos son replicados. datos y el servidor envía la respuesta a esas peticiones. Algoritmo de migración. Algoritmo de replicación de lectura. Decrementan el número de accesos remotos para evitar el overhead. Migra. Los datos son migrados al sitio donde se solicita el acceso.. Desventajas Algoritmo de. Los. clientes. Servidor. localizar. Central. acceder a los datos.. el. deben servidor. ser. Ventajas capaces. apropiado. de Es simple de implementar. para El servidor ejecuta las lecturas y escrituras en los datos.. Si se tiene un único servidor este se convierte en un cuello de botella. Algoritmo. de El cuello de botella se traslada a un nodo múltiples. lectores. replicación. participante en DSM, pues en él se ejecuta escritores. completa. un proceso llamado secuenciador que. –. múltiples. asigna números a las escrituras para que éstas se procesen en orden. Algoritmo migración. de La página que contiene los datos a Puede. integrar. DSM. con. la. acceder migra completamente en lugar de memoria virtual. migrar el dato individual pedido.. La página es removida de todos. Susceptible a Thrashing. los espacios de direcciones si la. 24.
(32) MISC-02-2-19. página. ya. había. migrado. previamente. Algoritmo. de Solo los thread en un host pueden acceder Invalida el multicast así no se. replicación de a los datos en el mismo bloque en aumenta el overhead lectura. cualquier momento. Tabla 2.1. Algoritmos de implementación de DSM. Estos protocolos son necesarios para garantizar el acceso concurrente a los datos por ello debe tenerse en cuenta la coherencia de protocolos.. 2.4. COHERENCIA DE PROTOCOLOS. Se manejan los protocolos de Write-invalidate y Write-update, a continuación son descritos brevemente (CNE Tutorial Modules Central).. 2.4.1. Write-invalidation. Para la lectura un dato puede ser accedido por dos o más procesos. Para lectura y escritura sólo puede acceder un proceso. Múltiple lector – único escritor. Invalida copias de lectura antes de que una escritura ocurra, las actualizaciones se propagan cuando los datos son leídos.. 25.
(33) MISC-02-2-19. Es aconsejable cuando la tasa de lecturas/escrituras es alta, pero si la tasa es pequeña lo mejor es un esquema de único lector – único escritor.. 2.4.2. Write-update. Las actualizaciones hechas por un proceso se hacen localmente y multicast a las replicas que manejan copias de Múltiple lector – múltiple escritor. los datos. Varios procesos pueden escribir los mismos datos al mismo tiempo.. 2.5. DISEÑO DSM. El desempeño de un sistema DSM depende del tamaño escogido para la granularidad3 y del protocolo usado para el remplazo de las páginas. Entre más grande sea el tamaño de la página existirán más procesos interesados en dicha página, puede entonces presentarse thrashing. En los sistemas actuales no se utilizan páginas de tamaños grandes, sino que se han inclinado por una granularidad fina. En un sistema DSM el manejo de la memoria tiene que tratar el remplazo de las páginas porque el tamaño de la memoria física es limitado.. 3. La granularidad se refiere al tamaño de la unidad de memoria compartida: byte, palabra o página.. 26.
(34) MISC-02-2-19. El espacio de direcciones mediante DSM se puede tratar mediante dos diseños esenciales, que se presentan a continuación. (Rincón, 2001). 2.5.1 DSM basada en páginas. El espacio de direcciones es dividido en trozos o porciones que se encuentran dispersos por todos los procesadores del sistema. Cuando un proceso referencia una dirección que no es local, DSM busca el trozo que contiene la dirección y reinicia la instrucción.. Una mejora al desempeño DSM es replicar los trozos y estructuras de sólo lectura, aunque también se podrían replicar los de lectura-escritura esto le adiciona el manejo de protocolos de consistencia.. Los detalles importantes a tratar en DSM basada en páginas son: •. La replicación. •. El conocimiento del propietario. •. El hallazgo de las copias de las páginas. •. El Remplazo de las páginas. Para conocer el propietario de una página lo más simple es hacer un broadcast acompañado del tipo de operación que se desea y si se necesita copia de la página, así el propietario se puede mantener “anónimo” porque entonces le envía. 27.
(35) MISC-02-2-19. la propiedad de lectura o escritura y la copia de la página en tal caso. Una desventaja del broadcast es que interrumpe a cada procesador para forzarlo a responder, esto representa un gasto de tiempo además de ancho de banda. (Rincón).. Existen varias posibilidades para resolver éste problema:. •. Tener un Administrador de páginas que almacene la pista de los propietarios de cada página y así las peticiones se realizan a él, pero surge otro problema y es la sobrecarga al administrador con todas las peticiones que llegan, el problema se reduce si se tienen varios administradores.. •. Cada procesador es responsable de mantener una lista con los propietarios de las páginas, las peticiones para lectura o escritura se le envían directamente al probable propietario, pero si el propietario ha cambiado n veces, la petición tendrá que ser despachada n veces por cada probable propietario que recibe la petición pero que no encuentra ya la página. Para evitarse estos n despachos cada vez que cambia el propietario se hace un broadcast que permite que todos los procesadores actualicen su información.. Para encontrar las copias también existen dos posibilidades: •. Hacer un broadcast con el número de página a todos los procesadores que retienen la página para invalidarla.. •. Mantener una lista, ya sea por el propietario o por el administrador de páginas, con los procesadores que retienen páginas y cuáles páginas. Cuando se. 28.
(36) MISC-02-2-19. necesita invalidar una página, el propietario o el administrador de páginas envía un mensaje a cada procesador que retiene la página y hasta no recibirse el reconocimiento, la página no es invalidada. (Rincón). 2.5.2 DSM basada en objetos. A diferencia de DSM basada en páginas, este modelo suministra una memoria lineal de bytes de 0 a algún máximo. Cuando un proceso invoca cualquier método de un objeto es trabajo del sistema operativo localizar el objeto y hacer las invocaciones correspondientes.. Los procesos no pueden acceder directamente el estado interno de los objetos compartidos, para ello habría que relajar el protocolo de consistencia.. Existen varias posibilidades: •. Si no se replican los datos, todos los accesos a un objeto se hacen solamente sobre una copia teniéndose un pobre desempeño. Si hay migración se mejora el desempeño logrando mover los objetos hacia donde son necesitados.. •. Si se replican los objetos, las nuevas copias pueden ser creadas por demanda pero si se va a actualizar se deben invalidar todas las otras copias del objeto.. Adoptar esta aproximación de DSM ofrece ventajas como: •. La implementación es más flexible porque los accesos son controlados.. 29.
(37) MISC-02-2-19. •. La sincronización y el acceso pueden ser integrados claramente. (Rincón). En el capitulo 3 se presentan sistemas que han implementado el modelo de memoria virtual compartida y distribuida, lo que muestra hasta donde ha llegado la aplicación de algunos de los algoritmos vistos en esta parte. Existen proyectos de computación paralela en Linux que están implementando la ejecución simultánea de múltiples códigos en múltiples nodos.. 30.
(38) MISC-02-2-19. 3. ALGUNOS SISTEMAS QUE IMPLEMENTAN MEMORIA VIRTUAL COMPARTIDA DISTRIBUIDA MVCD. Ballesteros, en su tesis Doctoral, (Ballesteros, 1998), afirma que existen varias implementaciones de MVCD, pero aún ninguna que se adapte a todas las clases de aplicaciones existentes; no pueden tratar con la diversidad de aplicaciones.. Los sistemas de memoria virtual distribuida no suministran una forma fácil para compartir dinámicamente los recursos disponibles de memoria distribuida cuando se trata de preservar la transparencia, la adaptabilidad y la extensibilidad.. En algunos sistemas encontrados está Advice que permite construir sistemas adaptables de memoria virtual distribuida y memoria compartida distribuida según afirma Ballesteros. Su afirmación se basa en que el diseño de este sistema es modular y hace uso de unas interfaces bien definidas (DAS/Owner y owner/DMM) que brindan la posibilidad de remplazar, adicionar o modificar esas partes que no se ajustan con una aplicación mientras se reutilizan las partes restantes, además se ejecuta fuera del kernel y es lo que permite que sea completamente adaptado por las aplicaciones, cuando sea necesario, sin interrumpir a otros usuarios. (Ballesteros, 1996).. 31.
(39) MISC-02-2-19. Algunos sistemas implementan el manejo de memoria fuera del kernel otros no, para mayor detalle de cómo es la administración de la memoria y los procesos, se han tomado de referencia sistemas tales como Advice, JIAJIA, Mirage, Pisma y off.. 3.1. ADMINISTRACIÓN DE MEMORIA. 3.1.1. Sistema Advice. Advice es una arquitectura que contempla un espacio de direcciones virtual llamado VAS, éste contiene un conjunto de páginas de memoria virtual donde un proceso asociado a una aplicación puede ejecutarse. Cada nodo puede tener uno o varios VAS, usualmente uno por proceso.. El VAS es implementado por un objeto llamado Administrador de espacio de direcciones distribuido DAS.. Los DAS mapean regiones de memoria desde otro DAS sea local o remoto. Mantienen un espacio de direcciones virtual hecho de páginas de memoria virtual y su trabajo es encontrar el propietario de un área particular de la memoria.. Para cada región mapeada existe un objeto llamado Owner, responsable de la coherencia, paginación y protección de las páginas contenidas en la región.. 32.
(40) MISC-02-2-19. El DAS ubica el Owner adecuado y delega en él la operación en el espacio de direcciones. El DAS y el Owner se ejecutan a nivel de usuario y usan los servicios del sistema para hacer su trabajo. Los servicios son implementados por administradores de memoria distribuida privilegiados DMM, estos controlan y multiplexan las direcciones hardware traducidas en cada nodo. El trabajo de un DMM es implementar un software distribuido en los TLB, ahora denominados DTLB. Las direcciones virtuales DTLB son las que la máquina usa. Los usuarios pueden instalar vía DAS y Owner nuevos mapeos de memoria virtual a física en su DMM gracias a los TLBs. (Ballesteros). Si una dirección virtual del segmento de datos no aparece en el DTLB:. 1. El acceso causa un fallo de página, el DMM se entera y pasa este fallo al DAS. 2. El DAS recibe el fallo y determina cuál Owner es responsable de esa dirección virtual faltante. 3. Si existe un Owner que trata esa dirección virtual, el fallo se le pasa al DAS del Owner ahora seleccionado, si no existe un Owner ocurre una excepción. 4. El Owner es quien está obligado a encontrar la razón del fallo de página 5. El Owner hace llamados al DMM para reparar el problema que causó el fallo de página.. 33.
(41) MISC-02-2-19. La Figura 3.14 es un esquema de los objetos que intervienen en el manejo de las páginas remotas y locales, para el sistema Advice:. Figura 3.1. Modelo de memoria virtual compartida distribuida en Advice. El DAS delega en el Owner la responsabilidad de mapear regiones de memoria. Cada VAS está implementado por un DAS y las aplicaciones operan con los DAS para manejar sus VAS.. El procesador elegido distribuye un proceso en subprocesos a sus vecinos a través de sus cuatro memorias adyacentes. Esta distribución se hace por medio del balanceador dinámico de carga copiando cada subproceso en la memoria adyacente a un procesador y luego insertando una entrada en su cola de tareas. Cada subproceso debe tener una especie de cabecera en la que indique los recursos requeridos para su ejecución. 4. Figura tomada del articulo Advice: An Adaptable and Extensible Distributed Virtual Memory Architecture. 34.
(42) MISC-02-2-19. Esta arquitectura tiene como elemento clave el algoritmo que balancea la carga dinámica. El algoritmo distribuye uniformemente los subprocesos del proceso, evitando en lo posible las transferencias de datos y la creación de caminos de comunicación largos en el acceso a datos compartidos.. La decisión de asignación de trabajos a un procesador se basa en la carga que tenga el mismo. (Ballesteros). 3.1.2. Sistema IVY. La arquitectura IVY maneja el espacio de direcciones de un proceso dividiéndolo en dos partes: un espacio de direcciones de memoria virtual compartida y un espacio privado. (CNE Tutorial Modules Central).. El espacio compartido puede ser accedido por cualquier proceso a través de la parte compartida de su espacio de direcciones. El espacio local es privado para cada proceso.. El mapeo de la memoria local de cada nodo y el espacio de memoria virtual compartida son manejados por un Administrador de mapeo que se encuentra en cada nodo.. 35.
(43) MISC-02-2-19. En un fallo de página, el proceso es bloqueado mientras se verifica si la página es local, si no es así se hace una petición a memoria remota para que entregue la página, cuando la página es devuelta el proceso continúa su ejecución y dicha página es accesible para todos los procesos en el nodo.. IVY sigue las semánticas de múltiples lectores – único escritor, soportando consistencia estricta. La consistencia es mantenida por el protocolo Writeinvalidate.. IVY implementa un nivel de control centralizado de asignación de memoria, sin embargo, cada procesador tiene su propio administrador local para manejar grandes espacios de memoria que se le hayan asignado por el controlador central, cuando se necesita mas memoria el controlador asigna mas memoria.. 3.1.3. Sistema Mirage. Mirage es uno de los sistemas que es implementado como parte del kernel del sistema operativo. (CNE Tutorial Modules Central). Extiende el protocolo Write-invalidation del sistema IVY para el control del thrashing. Cuando una página es transferida a un procesador, éste puede retenerla por un tiempo “d” así cuando le llegue un mensaje de invalidación o que dicha página es solicitada por un escritor, el procesador verifica su tiempo “d”, si este tiempo no ha expirado se lo informa al Controlador para que espere un. 36.
(44) MISC-02-2-19. tiempo, una vez transcurrido, la página es liberada para que otro procesador la tome, lo que se conoce como un token. Los principales beneficios del esquema de token se resumen en lo siguiente: !. Para el procesador local, “d” suministra un grado de control, por ejemplo el número de referencias a una página se harán antes de que otro procesador pueda referenciar esa página.. !. Incrementar “d” decrementa el throughput de un proceso individual, sin embargo otros procesos se pueden beneficiar por el decremento en el overhead debido al thrashing.. 3.1.4. Sistema PiSMA. La arquitectura PiSMA (Parallel vIrtually Shared Memory Architecture) combina los beneficios del modelo de memoria compartida y del modelo de memoria distribuida, alternando procesadores y memoria. Cada procesador está conectado a 4 memorias y cada memoria a 4 procesadores. Esta estructura habilita a cada procesador a comunicarse directamente (a través de una memoria común) con 8 procesadores vecinos, la figura 3.25 ilustra esta interacción:. 37.
(45) MISC-02-2-19. Figura 3.2. Arquitectura PiSMA. La comunicación con cualquier otro servidor mas allá de estos 8 procesadores en la malla es ejecutada por paso de mensajes la cual es transparente al usuario. Los 4 puertos a memoria son implementados como 4 cachés conectados en el mismo bus con el módulo de memoria.. La comunicación interprocesador no existe, los módulos de memoria son usados como medios de comunicación junto con el paso de mensajes, las transferencias se hacen memoria a memoria. Esta operación de copia es ejecutada por procesadores comunes a cada par de memoria.. El modelo de programación PiSMA distingue entre datos compartidos y privados. Los privados residen en una de las 4 memorias adyacentes al procesador de ejecución y son referenciados relativamente por medio de un desplazamiento. Las. 5. Figura tomada de Pisma: A parallel VSM Architecture. 38.
(46) MISC-02-2-19. variables privadas se referencian directamente, el procesador coloca la dirección física en su bus y lee de la memoria apropiada. No hay necesidad de hardware especial para ejecutar esta transacción, el procesador ve sus 4 memorias vecinas como un espacio de memoria uniforme y contigua. (Lioupis, 1999). Los datos compartidos pueden o no estar en una memoria adyacente y estar siempre referenciados por medio de apuntadores de indirección. Cuando la aplicación se ejecuta, los datos compartidos pueden ser accedidos directamente (si residen en una memoria adyacente a la memoria del procesador de ejecución) o pueden ser accedidos remotamente (vía paso de mensajes). Por eso no es posible referenciar directamente esta clase de datos de una manera absoluta, su localización en el sistema es desconocida.. El compilador de la aplicación genera el código apropiado para soportar este esquema de acceso. Para cada recurso compartido en la aplicación se asigna un apuntador de indirección.. En ejecución, la localización de las variables compartidas es establecida cuando se usan por primera vez y entonces se inicializan los apuntadores de indirección asociados.. Cuando una variable compartida se accede directamente por un procesador, el correspondiente apuntador de indirección contiene su dirección física en una de las 4 memorias adyacentes. El procesador de ejecución simplemente ejecuta un 39.
(47) MISC-02-2-19. acceso indirecto a su espacio de memoria conectada físicamente. Los datos compartidos son accedidos como datos locales.. Cuando los recursos de datos compartidos son remotos al procesador de ejecución, el valor contenido en el apuntador de indirección es entonces una dirección especial de memoria diseñada para generar un Trap en el sistema operativo.. El apuntador de indirección contiene información adicional sobre la localización de los datos compartidos en el sistema, tales como el módulo de memoria física, la dirección y el estado de uso del recurso compartido.. PiSMA usa direcciones físicas cuando accede directamente a los datos y cuenta con un mecanismo de traducción software para generar mensajes para peticiones de datos remotos, así se requiere que los datos tengan una localización física fija en la memoria del sistema, para evitar problemas de coherencia en los datos.(Lioupis). Los mensajes generados desde el sistema operativo son transmitidos a sus destinos por medio del sistema de memoria. Cada procesador tiene una cola de mensajes definida en cada una de sus 4 memorias adyacentes. En estas colas los 8 procesadores vecinos almacenan los mensajes. Durante la operación normal del procesador se maneja una interrupción por un Administrador de mensajes, el cual consulta las colas y sirve a los mensajes pendientes. 40.
(48) MISC-02-2-19. Los mensajes son transmitidos a sus destinos de procesador a procesador. Cada mensaje contiene una cabecera describiendo su tipo, su destino (localización del procesador en la malla), y su creador. Cada procesador que recibe un mensaje decide transmitirlo a uno de sus 8 procesadores vecinos o consumirlo el mismo. La dirección de transmisión es encontrada comparando la localización del procesador de la cabecera del mensaje con su propia localización de los procesadores vecinos (se asume que cada procesador conoce su propia localización). (Lioupis). PiSMA trata de minimizar la latencia del paso de mensajes:. #. A través de comunicación física por medio de memorias comunes adyacentes, evitando la generación de mensajes. Los procesadores trabajan con recursos compartidos en una memoria común que puede ejecutar muy rápidamente, sin intervención de mensajes. Es responsabilidad del algoritmo de difusión asignar partes de trabajo con recursos comunes a procesadores vecinos, pero la distribución de los procesos no siempre es posible. Algunas veces el algoritmo no tiene suficiente información para ejecutar la distribución óptima de un trabajo y otras veces la aplicación paralela no permite la distribución de su conjunto de datos en diferentes sistemas de memoria. El resultado es un incremento en el tráfico de mensajes. Para minimizar este impacto, el sistema operativo de PiSMA está diseñado para hacer intercambio a disco fuera de los procesos que esperan por datos remotos.. 41.
(49) MISC-02-2-19. 3.1.5. JIAJIA. JIAJIA es otra de las arquitecturas encontradas que se caracteriza por su protocolo de coherencia de caché basado en candados, fue desarrollado por la Academia China de Ciencias.. JIAJIA combina la memoria física de múltiples computadores para formar un gran espacio compartido.. Se tiene un nodo home para el caché de páginas compartidas y homes de páginas compartidas que son distribuidos a todos los hosts.. Con esta organización de memoria, el tamaño del espacio compartido puede ser más grande que la suma de las memorias locales de las máquinas.. La figura 3.3. ilustra el esquema de organización de memoria de este sistema:. 42.
(50) MISC-02-2-19. Procesador 1. Procesador 2. Procesador n. home home. caché. caché caché caché. caché. home. Interconexión de red Figura 3.3. Organización de la memoria en JIAJIA. JIAJIA organiza la memoria compartida en forma NUMA6. Cada página compartida tiene un nodo home y los homes de páginas compartidas son distribuidos a todos los nodos. Las referencias a páginas compartidas remotas causan que estas páginas sean traídas de su home y almacenadas localmente, la página remota es guardada en el mismo espacio de direcciones de usuario como en su nodo home. De esta manera las direcciones compartidas de una página son idénticas en todos los procesadores, no se requiere traducción de direcciones en un acceso remoto.. Las páginas compartidas son asignadas con la función del sistema llamada mmap(), cada una tiene una dirección global fija que es determinada por el home de la página. Inicialmente una página es mapeada a su dirección global solamente por su procesador home.. 6. Es una arquitectura de procesamiento paralelo en la cual un procesador tiene su propia memoria local pero también puede acceder a la memoria de otros procesadores.. 43.
(51) MISC-02-2-19. Cualquier página remota guardada localmente debe encontrar una posición en el caché local. Si el número de páginas remotas guardadas localmente es mayor que el número máximo permitido, algunas páginas por antigüedad. deben ser. remplazadas para dar lugar a nuevas páginas.. En otros sistemas se mantiene una tabla de páginas con la información de todas ellas, JIAJIA en lugar de guardar la información de todas las páginas compartidas, mantiene una tabla en la que sólo guarda su dirección, estado protegido y una copia de páginas escribibles. Cada página que está en el caché tiene un home, un procesador no home puede llevarla al caché en uno de tres estados: inválido, sólo lectura y lectura-escritura.. Cuando se da una liberación, el liberador compara todas las páginas escritas en el caché en su sección critica con sus copias, así puede obtener referencias de esta sección. Estas referencias son entonces enviadas a sus home asociados. Al mismo tiempo un mensaje de liberación es enviado al administrador de candados asociado para liberar el candado.. Un procesador que envía una petición, al administrador de candados, es “encasillado” hasta que le es cedido el candado. Una vez se cede el candado, el administrador de candados coloca el mensaje asociado a dicho candado El procesador recibe el mensaje de cesión e invalida todas las páginas en el caché que son notificadas como obsoletas por el mensaje asociado al candado.. 44.
(52) MISC-02-2-19. Una barrera es una combinación de un candado o bloqueo y un desbloqueo. En una barrera se limpian todos los mensajes de todos los candados.. En un fallo por escritura, la página de memoria asociada es tomada del home en estado de sólo lectura en la memoria local. Si ésta página escrita no está presente o está en estado inválido en memoria local, se toma entonces del home en estado lectura-escritura. Si la página escrita está en estado de sólo lectura en memoria local, el estado es convertido en lectura-escritura. Se registra un mensaje de candado sobre ésta página y se crea una copia de ella antes de la escritura.. El protocolo implementado por JIAJIA puede ser optimizado teniendo en cuenta: #. En el protocolo básico, si se pide una página del caché y ha sido modificada, (el mensaje en el candado indica este evento) se invalida inmediatamente. Sin embargo, si la modificación es hecha por el mismo procesador que hizo la solicitud y la página no ha sido modificada por otros procesadores la invalidación no es necesaria.. # Con esta optimización un procesador puede retener el acceso correcto a páginas modificadas por él mismo en una solicitud.. #. En el protocolo básico, los mensajes producidos en una sección crítica son enviados al candado en una barrera. Sin embargo, si una página es modificada solamente por su nodo home y otros procesadores no han leído la página desde la última barrera entonces es innecesario enviar mensaje de escritura. Si 45.
(53) MISC-02-2-19. se registra un mensaje de lectura en el home de una página, se puede recibir una petición de obtención de página remota en cualquier momento.. Para eliminar la invalidación innecesaria en candados se puede manejar un número para cada candado, el número se incrementa cuando el candado es transferido. Además cada procesador maneja también su número local para cada candado que se lleva al caché. Cuando se registra un mensaje de escritura en el candado, el número actual del candado se registra también. En una petición de página, el procesador incluye el número del candado en el mensaje. En un candado cedido, el mensaje de escritura tiene un número más grande que el de la petición enviada por el procesador. Entonces el procesador coloca su número local del candado al número actual de dicho candado e invalida las páginas del caché de acuerdo con el mensaje de escritura recibido como normal. (Hu).. 3.1.6. Sistema off. Off es un enfoque de un sistema operativo distribuido presentado por Francisco Ballesteros en su tesis doctoral de informática. El esquema de memoria virtual distribuida para off se basa en una DTLB (Distributed Translation Lookaside Buffers) encargada de traducir las direcciones remotas. El mecanismo consiste en tener en la entrada de la Tabla de Páginas local TPL, un índice que apunte a su vez a una entrada en la Tabla de Páginas Remotas TPR. Para identificar que una entrada en la TPL es remota se confirma 46.
(54) MISC-02-2-19. que la entrada respectiva es inválida y además contiene el índice de la entrada en la TPR como ya se mencionó.. En la TPL los marcos locales pueden contener marcos remotos, y Ballesteros afirma al respecto que cada marco local que es cache de un marco remoto puede ser empleado como destino de más de una traducción.. Ballesteros contempla tres estados en su TPL: •. Estado local: una Tabla de Páginas con direcciones virtuales que apuntan a direcciones físicas locales.. •. Estado Remoto no referenciado: la Tabla de Páginas Local tiene una o varias entradas invalidas conteniendo un índice de la Tabla de Páginas Remotas y la entrada respectiva en la TPR no tiene marco de página asignado.. •. Estado Remoto referenciado: la página remota ha sido accedida anteriormente por lo tanto ya existe un marco local que la contiene, en la TPL la entrada no es inválida y contiene el número del marco de página local que se está usando para guardar el marco de página remoto.. Cuando ocurre un fallo de página remoto se asigna un marco de página local y se copia el marco remoto en él, colocándose en la TPR en la entrada respectiva la dirección del marco local que almacena el marco remoto y se valida la entrada en la TPL haciendo que apunte al marco local. El DMM indica el origen y destino de la. 47.
(55) MISC-02-2-19. traducción considerada. Ballesteros en la figura 3.4. muestra cómo se realizan las traducciones para emplear memoria remota.. Figura 3.4. La DTLB de off. 3.2. Manejo de procesos en los sistemas vistos. En términos generales las arquitecturas en las que se hacen migración de procesos, se debe principalmente al balanceo de la carga, porque es vital mover un proceso a un nodo que tenga suficiente memoria libre o reducir el numero de operaciones E/S de archivo cuando la distribución de la carga es desigual o hay excesivo intercambio global a disco debido a la falta de memoria en uno de los nodos.. Un proceso se ejecuta en una sola máquina remota de las disponibles por el sistema, ésta elección corresponde en un principio al del mejor nodo, algunos monitorean el comportamiento de éste y los demás procesos para iniciar migración 48.
(56) MISC-02-2-19. si el nodo actual se queda corto ante la exigencia de recursos de un proceso, esto con el fin de mejorar el desempeño. Si se hacen varios llamados a sistemas remotos el impacto es mínimo en la seguridad de la máquina remota. Cuando el proceso hace un llamado al sistema, por ejemplo una operación E/S, los datos se mantienen en la máquina donde el proceso se inició, y no se van a encontrar en la máquina remota donde se pensaría que podrían ser llevados. Los llamados al sistema son tomados y ejecutados por demonios del sistema en lugar del sistema operativo de la máquina remota, el demonio envía el llamado al sistema desde la máquina remota a la máquina donde los procesos se iniciaron, estos llamados al sistema se ejecutan y el demonio envía el resultado de regreso a la máquina remota. Si se tiene una cola de procesos ésta se puede manejar eficientemente con una sola máquina, aunque con cientos de máquinas la eficiencia no debe disminuir.. El modelo general planteado en las arquitecturas está basado en el modelo nodohome, (cada nodo es tanto maestro para los procesos que fueron creados localmente y servidor para procesos remotos, los que migraron a otros nodos) en el cual todos los procesos de usuario parecen correr en el mismo nodo de usuario, cada nuevo proceso es creado en el mismo sitio junto con sus procesos padre.. Los procesos que han migrado interactúan con el ambiente del usuario a través del nodo home pero donde sea posible se usan los recursos locales. Para los procesos que desean encontrar máquinas donde puedan ejecutarse y requieren de una plataforma especifica en la cual procesarse se hará uso de un 49.
(57) MISC-02-2-19. coordinador, quien encontrará el nodo adecuado, y mediante el cual existirá un identificador tanto para el proceso como para la máquina, la máquina puede ser seleccionada a través de un listado de atributos en el cual se indican la plataforma y la cantidad de memoria. También se permite expresar las preferencias, por ejemplo, un proceso puede escoger ejecutarse en una máquina con mejores facilidades de punto flotante o ejecutarse en un conjunto de máquinas. Una máquina propietaria tiene control sobre cuáles procesos ejecutar y en qué circunstancias. El propietario escribe un archivo de configuración donde especifica los requerimientos y preferencias para sus procesos, permitiendo la indicación de qué procesos se ejecutan cuando la máquina está ociosa o qué procesos se ejecutan sólo un día de la semana, un requerimiento también puede ser que solamente los procesos de un grupo específico de usuarios se pueden ejecutar, aunque esto no implica que la máquina no acepte procesos de un grupo diferente cuando se encuentre ociosa.. Algunos sistemas no ejecutan los procesos en el orden en que se obtienen y para ello aplicarán algoritmos de asignación de “prioridades” con respecto a la utilización del procesador por cada proceso lanzado a una máquina.. En realidad, dado que los protocolos empleados para obtener cachés de marcos remotos también los suministra la aplicación, no sólo es posible emplear “marcos'' de página procedentes de disco sino también de cualquier otra entidad con tal de que ésta implemente la interfaz del gestor de memoria física. Un uso típico es la 50.
(58) MISC-02-2-19. implementación de un gestor de memoria física que sintetice el contenido de los marcos. Por ejemplo, se podría imaginar un servidor que presenta una interfaz similar al del gestor de memoria física y (en lugar de mantener almacenado en algún soporte el contenido de los marcos que suministra) suministra marcos rellenos con ceros cada vez que se le requiere un marco. Este (falso) gestor de memoria física se puede emplear para inicializar el contenido de otros marcos. Otro uso posible sería el empleo de un gestor de memoria que emplease algún algoritmo de compresión y/o algún algoritmo de encripción para reducir las necesidades de almacenamiento de respaldo y/o para proteger el área de almacenamiento de respaldo. Por último, hay que considerar que la “aplicación” que trata las excepciones de la DTLB e implementa por tanto las políticas empleadas por la misma no tiene porque ser la misma aplicación que utiliza la DTLB para implementar su espacio de direcciones. Es factible la implementación de servidores que realicen estas tareas y, debido al empleo de portales, también es factible la inclusión de estos servidores dentro del núcleo.. Los sistemas vistos permiten concluir que:. #. Los sistemas distribuidos de objetos se pueden beneficiar de la arquitectura Advice porque se puede hacer migración de objetos, replicación y balanceo de carga.. 51.
(59) MISC-02-2-19. Esta arquitectura especifica unos actores para el manejo de la memoria virtual compartida con unas funciones bien determinadas que contribuyen a la adaptabilidad de diferentes sistemas, el esquema por estar implementado fuera del kernel del sistema operativo brinda por si mismo una ventaja al no tener que introducirse en el kernel para realizar las modificaciones pertinentes.. #. La principal característica de Advice es que considera todos los recursos de la red en lugar de los de cada nodo. Otros sistemas como Spin, The caché Kernel y Kea consideran estos recursos locales. El diseño modular (DAS, OWNER, VAS, DMM) es el que permite remplazar, adicionar o modificar estos componentes para adaptarlos a la aplicación, sin molestar a otros usuarios cuando se necesiten adaptaciones. Otros sistemas como Mach, XMM y Aegis también tienen su sistema de memoria virtual fuera del kernel en parte o completamente.. #. Algunos sistemas como Mirage manejan un tiempo de retención de las páginas para garantizarle a un procesador el modo exclusivo, sin embargo, este esquema genera retardos pues, una copia no se puede invalidar en todos los casos si un procesador tiene el “token” de la página en ese momento, para que una escritura se lleve a cabo debe esperarse el tiempo necesario de liberación de la página, esto implica tener que repetir tantas veces como se agote el tiempo de retención, así en el ultimo intento este tiempo ya sea muy corto.. 52.
(60) MISC-02-2-19. Pero a favor tiene que si un lector se convierte en escritor se notifica del nuevo estatus sin necesidad de transferir la página y si se termina el acceso de escritura, el escritor va a conservar sus permisos de acceso, se garantiza que solo va a existir una copia con permisos de escritura en cada momento. IVY maneja de manera similar este aspecto. #. En JIAJIA no se necesita traducción de direcciones remotas porque la página mantiene siempre la misma dirección en todos los procesadores, esto se logra mediante la copia de la página en el mismo espacio de direcciones de usuario que se tiene en el nodo-home, si el espacio se satura se podrá implementar un algoritmo del menos usado recientemente.. #. Los sistemas de memoria virtual compartida han implementado un paradigma de memoria compartida encima de una arquitectura de memoria distribuida con comunicación por paso de mensajes.. #. Los dos modelos de arquitecturas de multiprocesadores, el modelo de memoria compartida y el modelo de memoria distribuida, sufren serias limitaciones por su naturaleza. Las arquitecturas de memoria distribuida prometen mejor escalabilidad e incremento en el desempeño pero es más difícil de programar. Las arquitecturas de memoria compartida de otro lado tienen un mejor modelo de programación, su desventaja está limitada por el ancho de banda del bus compartido lo cual restringe la escalabilidad.. 53.
Documento similar