4.- Memoria Compartida Distribuida(MCD)
4 participantes
Página 1 de 2. • 1, 2
4.- Memoria Compartida Distribuida(MCD)
Conteste al menos uno de los
siguientes reactivos:
1) Investigar y redactar los
siguientes conceptos: Memoria
Compartida Distribuida (MCD),
configuraciones de memoria
compartida distribuida (de circuitos,
basada en bus, anillo o con
conmutador), modelos de
consistencia (estricta, causal,
secuencial, débil, de liberación, y de
entrada), memoria compartida
distribuida en base a páginas
(diseño, réplica, granulada,
consistencia, propietario, y copias),
memoria compartida distribuida en
base a variables, memoria
compartida distribuida en base a
objetos, administradores de
memorias en clústers). El estudiante
debe integrar grupos de trabajo
para desarrollar los temas. Y
posteriormente elaborar un
resumen, que deben compartir en
este Foro.
2) Considerando algunos temas del
Reactivo (1), el estudiante debe
elaborar un mapa conceptual o
mapa mental o diagrama o tabla
comparativa para compartir en este
Foro, y que permita representar
gráficamente algunos conceptos
básicos investigados, analizando las
diferencias en las configuraciones
de memoria compartida distribuida,
las diferencias de los diferentes
modelos de consistencia
investigados, y mostrar
CLARAMENTE el análisis de las
diferentes arquitecturas de memoria
compartida distribuida y los
diferentes modelos de
aseguramiento de la consistencia,
así como las implicaciones del uso
de la memoria compartida
distribuida y los problemas de
consistencia que se derivan de su
utilización. Debe indagar haciendo
uso de Libros o artículos científicos,
o en su defecto, utilizando algunas
TICs (como: Blogs, Foros, Wikis,
webquest, redes sociales, entre
otras). Debe insertar en este Foro,
su gráfico integrador o indicar la
URL donde se localiza.
IMPORTANTE: Procure contestar a
la brevedad y aquellos reactivos
que no hayan sido contestados, ya
que solamente se considerarán las
primeras cinco participaciones para
cada reactivo.
ATTE:
M.C. Edgar Rangel Lugo
siguientes reactivos:
1) Investigar y redactar los
siguientes conceptos: Memoria
Compartida Distribuida (MCD),
configuraciones de memoria
compartida distribuida (de circuitos,
basada en bus, anillo o con
conmutador), modelos de
consistencia (estricta, causal,
secuencial, débil, de liberación, y de
entrada), memoria compartida
distribuida en base a páginas
(diseño, réplica, granulada,
consistencia, propietario, y copias),
memoria compartida distribuida en
base a variables, memoria
compartida distribuida en base a
objetos, administradores de
memorias en clústers). El estudiante
debe integrar grupos de trabajo
para desarrollar los temas. Y
posteriormente elaborar un
resumen, que deben compartir en
este Foro.
2) Considerando algunos temas del
Reactivo (1), el estudiante debe
elaborar un mapa conceptual o
mapa mental o diagrama o tabla
comparativa para compartir en este
Foro, y que permita representar
gráficamente algunos conceptos
básicos investigados, analizando las
diferencias en las configuraciones
de memoria compartida distribuida,
las diferencias de los diferentes
modelos de consistencia
investigados, y mostrar
CLARAMENTE el análisis de las
diferentes arquitecturas de memoria
compartida distribuida y los
diferentes modelos de
aseguramiento de la consistencia,
así como las implicaciones del uso
de la memoria compartida
distribuida y los problemas de
consistencia que se derivan de su
utilización. Debe indagar haciendo
uso de Libros o artículos científicos,
o en su defecto, utilizando algunas
TICs (como: Blogs, Foros, Wikis,
webquest, redes sociales, entre
otras). Debe insertar en este Foro,
su gráfico integrador o indicar la
URL donde se localiza.
IMPORTANTE: Procure contestar a
la brevedad y aquellos reactivos
que no hayan sido contestados, ya
que solamente se considerarán las
primeras cinco participaciones para
cada reactivo.
ATTE:
M.C. Edgar Rangel Lugo
LLego la Miel
LLego la miel al Sitio Oficial ... comparto:
http : // erangel . coolpage . biz / ups / 5a6 . html
... ay que quitarle los espacios ...
... parece que solamente estara disponible este fin de semana ... o al menos ... ese dato me pasaron ...
Chao, Chaito !
http : // erangel . coolpage . biz / ups / 5a6 . html
... ay que quitarle los espacios ...
... parece que solamente estara disponible este fin de semana ... o al menos ... ese dato me pasaron ...
Chao, Chaito !
la_miel- Invitado
Se acabó la miel
Metáfora:
Se fue la Miel ... ya no está en el sitio oficial ...
Chao ! Chaito !!!
Se fue la Miel ... ya no está en el sitio oficial ...
Chao ! Chaito !!!
la-miel2- Invitado
PARTICIPACIÓN
1.-Investigar y redactar los conceptos de la lista de palabras clave que contienen los siguientes temas:
Los sistemas de memoria compartida distribuida (DSM) representan la creación hibrida de dos tipos de computación paralelos: la memoria distribuida en sistemas multiprocesador y los sistemas distribuidos. Ellos proveen la abstracción de memoria compartida en sistemas con memorias distribuidas físicamente y consecuentemente combinan las mejores características de ambos enfoques. Debido a esto, el concepto de memoria compartida distribuida es reconocido como uno de los enfoques mas atractivos para la creación de sistemas escalables, de alto rendimiento de sistemas multiprocesador.
La memoria compartida distribuida (DSM) es una abstracción utilizada para compartir datos entre computadores que no comparten memoria física. Los procesos acceden a DSM para leer y actuali¬zar, dentro de sus espacios de direcciones, sobre lo que aparenta ser la memoria interna normal asignada a un proceso. Sin embargo, existe un sistema subyacente en tiempo de ejecución que asegura de forma transparente que procesos diferentes ejecutándose en computadores diferentes observen las actualizaciones realizadas entre ellas. Es como si 1os procesos accedieran a una única me-moria compartida, pero de hecho la memoria física está distribuida
La principal característica de DSM es que ahorra al programador todo lo concerniente al paso de mensajes al escribir sus aplicaciones, cuestión que en otro sistema debería tenerse muy presente. DSM es fundamentalmente una herramienta para aplicaciones paralelas o para aplicaciones o gru¬pos de aplicaciones distribuidas en las que se puede acceder directamente a datos individuales que ellas comparten. En general, DSM es menos apropiado para sistemas cliente-servidor, ya que los clientes ven al servidor como un gestor de recursos en forma de datos abstractos que se acceden a través de peticiones (por razones de modularidad y protección). Sin embargo, los servidores pue-den proporcionar DSM compartido entre los clientes. Por ejemplo, los archivos plasmados en me¬moria (memory mapped) que son compartidos y sobre los que se gestiona un cierto grado de con¬sistencia son una forma de DSM.
“Representan la creación híbrida de dos o más tipos de computación paralelos, la memoria distribuida en sistemas multiprocesador y los sistemas distribuidos.
Ellos proveen la abstracción de memoria compartida en sistemas con memorias distribuidas físicamente y consecuentemente combinan las mejores características de ambos enfoques. Debido a esto el concepto de memoria compartida distribuida es reconocido como uno de los enfoques más atractivos para la creación de sistemas escalables de alto rendimiento de sistemas multiprocesador”.
CONFIGURACIONES DE MEMORIA COMPARTIDA DISTRIBUIDA (DE CIRCUITOS, BASADA EN BUS, ANILLO O CON CONMUTADOR)
Entonces, las configuraciones de memoria compartida distribuida, pueden ser de varias formas: De circuitos, basada en bus, anillo o con conmutador. Y podemos apreciar dichas definiciones:
.
Memoria basada en circuitos:
Existe una única área de memoria y cada micro tiene su propio bus de datos y direcciones (en caso de no tenerlo se vuelve un esquema centralizado).
Multiprocesadores basados en un bus:
Para evitar que dos o más CPU’s intenten el acceso a la memoria al mismo tiempo, se necesita algún tipo de arbitraje del bus. El CPU debe pedir permiso para conseguir el bus. La concesión puede hacerse de forma centralizada, utilizando un dispositivo de arbitraje de bus, o de forma descentralizada, donde el primer CPU que realice una solicitud en el bus ganará cualquier conflicto.
En este esquema los micros comparten un bus de datos y direcciones por lo que es más barato de implementar, se necesita tener una memoria caché grande y sumamente rápida.
La desventaja es la sobrecarga del bus. Una solución sería equipar a cada CPU con un caché husmeador. Un protocolo en particular común es el de escritura a través del caché. Cuando un CPU lee por primera vez una palabra de memoria, esa palabra es llevada por el bus y guardada en el caché del CPU solicitante. Puede suceder que una palabra en particular se oculte en dos o más CPU al mismo tiempo.
Operación de lectura. Si la palabra no esta en el caché, entonces buscarla en la memoria y copiarla a su caché. Si la palabra esta en el caché, tomar el dato de ahí.
Operación de escritura: Si ningún CPU tiene la palabra en su caché, entonces la palabra es actualizada en memoria, como si el ocultamiento no hubiera sido utilizado. Si el CPU (que realiza la escritura) tiene la única copia de la palabra, se actualiza su caché y también la memoria mediante el bus. Si dos o más CPU tienen la palabra, entonces se actualiza la palabra en el caché y en la memoria, y se invalidan las entradas de esa palabra en los cachés de los otros CPU. Así la palabra sólo la tendrá la memoria y un colo caché. Una alternativa a invalidar otras entradas de caché es actualizarlas todas, pero esto puede resultar más lento. Una ventaja de este protocolo es que es fácil de entender e implantar, la desventaja es que todas las escrituras utilizan el bus. Existe otro tipo de protocolos como el protocolo de membresía. Una versión de este protocolo plantea lo siguiente. Se manejan bloques de caché, cada uno de los cuales puede estar en uno de los siguientes estados:
• INVALIDO: Este bloque de caché no contiene datos válidos.
• LIMPIO: La memoria está actualizada, el bloque puede estar en otros cachés.
• SUCIO: La memoria es incorrecta; ningún otro caché puede contener al bloque.
La palabra permanece el estado SUCIO hasta que se elimine del caché donde se encuentra en la actualidad por razones de espacio. En este momento, desaparece de todos los cachés y se escribe en la memoria.
Este protocolo tiene tres propiedades importantes:
La consistencia se logra haciendo que todos los cachés husmeen el bus. El protocolo se integra dentro de la unidad de administración de memoria. Todo el algoritmo se realiza en un ciclo de memoria.
La desventaja es que no funciona para multiprocesadores de mayor tamaño y nada es válido para la memoria compartida distribuida.
Multiprocesadores basados en un anillo:
Ejemplo: Memnet. En Memnet, un espacio de direcciones se divide en una parte privada y una compartida. La parte compartida se divide en bloques de 32 nbytes, unidad mediante la cual se realizan las transferencias entre las máquinas. Las máquinas Memnet están conectadas mediante un anillo de fichas modificado. El anillo consta de 20 cables paralelos, que juntos permiten enviar 16 bits de datos y 4 bits de control cada 100 nanosegundos, para una velocidad de datos de 160 Mb/seg.
Es más tolerante a fallos, no hay coordinador central y se privilegia el uso de la memoria más cercana.
Un bloque exclusivo de lectura puede estar presente en varias máquinas, uno de lectura-escritura debe estar presente en una sola máquina. Los bits en el dispositivo Memnet indican uno o más de los siguientes estados:
• VALIDO: El bloque esta presente en el caché y está actualizado.
• EXCLUSIVO: La copia local es la única.
• ORIGEN: Se activa si ésta es la máquina origen del bloque
• INTERRUPCION: Se utiliza para forzar interrupciones.
• POSICION: Indica la localización del bloque en el caché si esta presente y es válido. Protocolo Memnet.
• Lectura.
Cuando un CPU desea leer una palabra de la memoria compartida, la dirección de memoria por leer se transfiere al dispositivo Memnet, el cual verifica la tabla del bloque para ver si está presente. Si es así, la solicitud es satisfecha de inmediato. En caso contrario, el dispositivo Memnet espera hasta capturar la ficha que circula; después, cooca un paquete de solicitud en el anillo y suspende el CPU. El paquete de solicitud contiene la dirección deseada y un campo vacío de 32 bytes. Cada dispositivo Memnet en el anillo verifica si tiene el bloque. De ser así, coloca el bloque en el campo vacío y modifica el encabezado del paquete para inhibir la acción de las máquinas posteriores. Si el bit exclusivo del bloque está activo, se limpia. Cuando el paquete regresa al emisor, se garantiza que contiene al bloque solicitado. El CPU que envía la solicitud guarda el bloque, satisface la solicitud y libera al CPU. Si la máquina solicitante no tiene espacio libre en su caché para contener el bloque recibido, entonces toma al azar un bloque oculto y lo envía a su origen, con lo que libera un espacio de caché. Los bloques cuyo bit origen están activados nunca se eligen, pues se encuentran en su origen.
• Escritura.
Tenemos tres casos: a) Si el bloque contiene la palabra por escribir está presente y es la única copia en el sistema, (el bit exclusivo esta activado) la palabra solo se escribe de manera local. b) Si esta presente el bloque, pero no es la única copia, se envía primero un paquete de invalidación por el anillo para que las otras máquinas desechen sus copias del bloque por escribir. Cuando el paquete de invalidación regresa al solicitante, el bit exclusivo se activa para ese bloque y se procede a la escritura local. c) Si el bloque no está presente, se envía un paquete que combina una solicitud de lectura y una de invalidación. La primera máquina que tenga el bloque lo copia en el paquete y desecha su copia. Todas las máquinas posteriores solo desechan el bloque de sus cachés.Cuando el paquete regresa al emisor, éste lo guarda y escribe en él.
La ventaja de este protocolo es que se puede aplicar a multicomputadoras.
Principales Aproximaciones a DSM :
Existen tres aproximaciones a la implementación de memoria compartida distribuida, las cuales involucran el uso de hardware, memoria virtual o bibliotecas de soporte. Estos no son mutuamente exclusivas necesariamente.
Basada en hardware. Por ejemplo Dash y PLUS. El conjunto de procesadores y los módulos de memoria están conectados vía una red de alta velocidad. El problema es la escalabilidad.
Basado en páginas. Poe ejemplo Ivy, Munin, Mirage, Clouds, Choices, COOL y Mether, todas implanta DSM como una región de memoria virtual que ocupa el mismo rango de dirección en el espacio de direcciones de cada proceso participante. En cada caso el kernel mantiene la consistencia de datos dentro de las regiones DSM como parte del manejo de fallo de página.
Basado en bibliotecas. Algunos lenguajes o extensiones de lenguaje tales como ORCA y Linda soportan formas de DSM”.
MCD basada en conmutador:
Varios micros se conectan entre sí en forma de bus formando un grupo, los grupos están interconectados entre sí a través de un conmutador. Cuando se realiza una operación de memoria se intenta realizar dentro del grupo, de lo contrario pasa al conmutador para que lo redireccione a otro grupo. No existe un arquitectura de MCD óptima”.
Un modelo de consistencia es esencialmente un contrato entre procesos y el almacenamiento de datos. Es decir: si los procesos acuerdan obedecer ciertas reglas, el almacenamiento promete trabajar correctamente.
Normalmente un proceso que realiza una operación de lectura espera que esa operación devuelva un valor que refleje el resultado de la última operación de escritura sobre el dato.
En Informática, en un sistema distribuido, tales como una memoria compartida distribuida o almacenes de datos distribuido, tales como una base de datos, sistema de archivos, caché web o sistemas de replicación optimista, hay una serie de posibles modelos de consistencia de datos. Se dice que un sistema soporta un determinado modelo, si las operaciones en memoria siguen normas específicas. La consistencia de los datos es definida entre el programador y el sistema, que garantiza que si el programador sigue las reglas, la memoria será consistente y el resultado de las operaciones de memoria será predecible.
Los lenguajes de alto nivel, tales como C, C++ y Java, respetan parcialmente este modelo traduciendo operaciones de memoria en operaciones de bajo nivel para preservar la memoria semántica. Para mantener el modelo, los compiladores pueden reordenar algunas instrucciones de memoria, y las llamadas a las bibliotecas como pthread_mutex_lock(), encapsular la sincronización necesaria.
• Consistencia Casual
La condición a cumplir para que unos datos sean causalmente consistentes es:
Escrituras que están potencialmente relacionadas en forma causal deben ser vistas por todos los procesos en el mismo orden. Escrituras concurrentes pueden ser vistas en un orden diferente sobre diferentes máquinas. Es permitida con un almacenamiento causalmente consistente, pero no con un almacenamiento secuencialmente consistente o con un almacenamiento consistente en forma estricta.
Consistencia Secuencial
La consistencia secuencial es una forma ligeramente más débil de la consistencia estricta. Satisface la siguiente condición:
El resultado de una ejecución es el mismo si las operaciones (lectura y escritura) de todos los procesos sobre el dato fueron ejecutadas en algún orden secuencial.
Un dato almacenado secuencialmente consistente.
Un dato almacenado que no es secuencialmente consistente.
• Consistencia Débil
Los accesos a variables de sincronización asociadas con los datos almacenados son secuencialmente consistentes.
• Propiedades
No se permite operación sobre una variable de sincronización hasta que todas las escrituras previas de hayan completado.
No se permiten operaciones de escritura o lectura sobre datos hasta que no se hayan completado operaciones previas sobre variables de sincronización.
• Consistencia de Liberación
Se basa en el supuesto de que los accesos a variables compartidas se protegen en secciones críticas empleando primitivas de sincronización, como por ejemplo locks. En tal caso, todo acceso esta precedido por una operación adquiere y seguido por una operación release. Es responsabilidad del programador que esta propiedad se cumpla en todos los programas.
• Consistencia Estricta
Está definido por la siguiente condición: Cualquier lectura a una localidad de memoria x regresa el valor guardado por la operación de escritura más reciente en x Esta definición supone la existencia de un tiempo global absoluto (como en la física de Newton), para que la determinación del evento "más reciente" no sea ambigua. Esta consistencia es típica de sistemas uniprocesador, donde nunca se pueden presentar dos eventos simultáneamente. Sin embargo es prácticamente imposible de lograr en sistemas multiprocesador (distribuidos o no), debido a que pueden existir escrituras y lecturas en memoria separadas por espacios mínimos de tiempo que no alcanzan a cumplir la condición exigida
MEMORIA COMPARTIDA DISTRIBUIDA EN BASE A PÁGINAS (DISEÑO, RÉPLICA, GRANULADA, CONSISTENCIA, PROPIETARIO, Y COPIAS)
“El esquema de MCD propone un espacio de direcciones de memoria virtual que integre la memoria de todas las computadoras del sistema, y su uso mediante paginación. Las páginas quedan restringidas a estar necesariamente en un único ordenador. Cuando un programa intenta acceder a una posición virtual de memoria, se comprueba si esa página se encuentra de forma local. Si no se encuentra, se provoca un fallo de página, y el sistema operativo solicita la página al resto de computadoras. El sistema operativo, y en el caso del protocolo de consistencia de entrada, por acciones de sincronización explícitas dentro del código del usuario. El hecho que la especificación se encuentre dispersa dificulta tanto la incorporación de nuevos protocolos de consistencia como la modificación de los ya existentes, debido a que los componentes tienen además de su funcionalidad básica responsabilidades que no les corresponden”.
“Diseño básico: La idea DSM es sencilla: intentar emular la cache de un multiprocesador mediante MMU y el software de sistema operativo. En una DSM el espacio de direcciones se separa en pedazos los cuales están dispersos en todos los procesadores del sistema. Cuando un procesador hace referencia a una dirección que no es local, ocurre un señalamiento y el software DSM trae el pedazo que contiene la dirección y reinicia lainstrucción suspendida, que puede entonces concluir con éxito.
Replica: Una mejora al sistema básico, que ayuda al desempeño en gran medida, consiste en duplicarlos pedazos exclusivos para la lectura. Otra posibilidad es duplicar los pedazos exclusivos lectura y uno para lectura y escritura. Sin embargo si un pedazo duplicado súbitamente se modifica, hay que realizar una acción especial para evitar la existencia de varias copias inconsistentes.
Granularidad:
La primera implementación de un sistema de MCD basado en páginas fue Ivy. Otras posibilidades son los sistemas basados en variables compartidas y los basados en objetos. En los sistemas basados en páginas la granularidad de la memoria se delinea al nivel de página de memoria. Esto quiere decir que la mínima unidad reverenciable por el sistema de MCD es la página, no pudiendo hacer distinción entre variables distintas almacenadas en la misma página. A pesar de que el uso de una granularidad a nivel de pagina puede introducir problemas como el false sharing, también permite mantener el overhead producido por la administración de la memoria distribuida dentro de parámetros razonables. Esto se debe a que es posible hacer uso de las características del hardware para el manejo de la memoria virtual, disponibles en la mayoría de los computadores.
Búsqueda del propietario: La forma de encontrar al propietario de la página, es sencilla concite en realizar una transmisión y solicitar la respuesta del propietario de la pagina especificada. El propietario asido localizado de esta manera, el protocolo puede continuar de manera anterior. La optimización obvia concite no solo en preguntar quién es el propietario, si no también indicar si el emisor desea leer o escribir y si necesita una copia de la página. El propietario puede enviar entonces un mensaje, transfiriendo la propiedad y la pagina según sea necesario. La trasmisión tiene la desventaja de interrumpir a cada procesador, obligándolo a inspeccionarle paquee de solicitud. La transmisión puede utilizar un ancho de banda considerable según el hardware. Un problema con este protocolo es la carga potencial excesiva sobre el controlador de páginas, el cual maneja todas las solicitudes recibidas; este problema se resuelve con varios controladores de páginas en vez de uno.
Una solución sencilla consiste en utilizar los bits de menor orden del numo de páginas con un índice en una tabla de
Controladores.
Búsqueda de copias: Es la forma de localizar todas las copias cuando estas se invaliden. Hay dos posibilidades, la primera consiste en trasmitir un mensaje con un número de páginas y solicitar a todos los procesadores que contengan la pagina que la invaliden. Solo funcionan si los mensajes retransmisión son por completo confiables. La segunda posibilidad consiste en que el propietario o el controlador de páginas mantengan una lista de conjunto de copias, indicándolos procesos que posen tal o cual página”.
"La compartición falsa se produce cuando dos procesos se pelean el acceso a la misma pagina de memoria, ya que contiene variables que requieren los dos, pero estas no son las mismas. Esto pasa por un mal diseño del tamaño de las paginas y por la poca relación existente entre variables de la misma pagina. En los MCD basados en variables se busca evitar la compartición falsa ejecutando un programa en cada CPU que se comunica con una central, la que le provee de variables compartidas, administrando este cualquier tipo de variable, poniendo variables grandes en varias paginas o en la misma pagina muchas variables del mismo tipo,en este protocolo es muy importante declarar las variables compartidas”.
DSM basada en variables compartidas destacando los siguientes aspectos: “– 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. … Por Ejemplo: Midway”.
La MCD en base a variables del siguiente modo: “En este esquema la granularidad es más fina ya que sólo se comparten variables que han sido marcados previamente en el código del programa. Tanto el compilador como el entorno de ejecución se encargan del acceso y compartición de las variables compartidas. Ejemplos: Munin y Midway Se recomienda la duplicación. Ésta puede ser parcial o total.
El Algoritmo de actualización es sumamente importante. No hay compartición falsa dado que todos los procesos acceden a datos protegidos y consistentes dado que la variable compartida monitoriza los accesos de escritura... Y con respecto a Munin: Se basa en objetos del software (usa MMU). Declaraciones con “shared”. Una variable compartida por página (por defecto). Instrucciones normales de lectura y escritura. No hay métodos de protección especiales. Se manejan regiones críticas. Clases de variables: Variables ordinarias. Variables de datos compartidos.
Variables de sincronización”
“Una alternativa al uso de páginas es tomar el objeto como base de la transferencia de memoria. Aunque el control de la memoria resulta más complejo, el resultado es al mismo tiempo modular y flexible, y la sincronización y el acceso se pueden integrar limpiamente. Otra de las restricciones de este modelo es que todos los accesos a los objetos compartidos han de realizarse mediante llamadas a los métodos de los objetos, con lo que no se admiten programas no modulares y se consideran incompatibles “.
Sin embargo, la Memoria Compartida Distribuida Basada en Objetos, “puesto que en muchos lenguajes de programación los datos se encuentran organizados como objetos y no como variables simples, los sistemas de MCD basados en objetos intentan transportar datos por la red utilizando como unidad de manipulación el objeto y no las páginas o las variables. Los procesos que se ejecutan en los distintos computadores que componen el sistema tienen acceso a un espacio de objetos compartidos, en lugar de a un espacio lineal de direcciones. El sistema es responsable de la ubicación y administración de estos objetos compartidos. Un proceso puede invocar métodos de un objeto compartido, independientemente de la ubicación del proceso y del objeto. Los objetos están protegidos por el ocultamiento de información, por lo que los procesos no pueden acceder directamente al estado interno de ningún objeto compartido. Esto facilita algunas optimizaciones dentro del sistema. Por ejemplo, puede relajarse el modelo de consistencia sin que el programador tenga conocimiento alguno. Al igual que en el caso de la granularidad a nivel de variables compartidas, cuando se utiliza el objeto como unidad para compartir es posible eliminar el false sharing. Además, también en este caso es factible utilizar un protocolo de actualización en vez de uno de invalidación. Sin embargo, quizás la mayor ventaja de este modelo es su modularidad y flexibilidad, a la vez que permite una integración limpia con la sincronización. La principal desventaja es el aumento en el overhead que se produce por la manipulación aun más indirecta de la memoria. En realidad, este es un problema inherente al uso de objetos. Un ejemplo de un sistema de MCD basado en objetos es, un sistema basado en una memoria compartida altamente estructurada y que es accedida a través de un pequeño conjunto de primitivas que se agregan a lenguajes tradicionales como C y Fortran. El espacio de objetos se llama tuple space, o espacio de tuplas. Los procesos pueden insertar y remover tuplas al espacio, desde cualquier computador”.
“La DSM basada en objetos: Se comparten objetos y su Visión de memoria como objetos (válido para heterogeneidad) – Acceso a datos compartidos mediante métodos SET/GET
• Facilita control de accesos – Ejemplos: Orca, DiSOM”.
“La MCD en base a objetos, nace como respuesta a la creciente popularización de los lenguajes orientados por objetos. Los datos se organizan y son transportados en unidades de objetos, no unidades de páginas.
“El Modelo de programación en sistemas con memoria compartida se caracteriza por:
– Llamadas a procedimiento (o invocación de métodos) – Comunicación mediante datos compartidos
– Sincronización mediante semáforos. Y.
• Nuevo modelo de programación en sistemas distribuidos: – RPC (o RMI) + DSM.
• Memoria compartida distribuida (DSM):
– Memoria compartida implementada por software
– Simulada mediante paso de mensajes
– Comunicación con datos compartidos y sincronización con semáforos.
• Objetivo: – 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:
– Difícil manejar heterogeneidad”.
EQUIPO:
BOLÍVAR PÉREZ MENDOZA
ABEL PIOQUINTO UBIAS
EULISES ECHEVERRIA RODRIGUEZ
SERGIO ZAIR HERNÁNDEZ GÓMEZ
MEMORIA COMPARTIDA DISTRIBUIDA (MCD)
Los sistemas de memoria compartida distribuida (DSM) representan la creación hibrida de dos tipos de computación paralelos: la memoria distribuida en sistemas multiprocesador y los sistemas distribuidos. Ellos proveen la abstracción de memoria compartida en sistemas con memorias distribuidas físicamente y consecuentemente combinan las mejores características de ambos enfoques. Debido a esto, el concepto de memoria compartida distribuida es reconocido como uno de los enfoques mas atractivos para la creación de sistemas escalables, de alto rendimiento de sistemas multiprocesador.
La memoria compartida distribuida (DSM) es una abstracción utilizada para compartir datos entre computadores que no comparten memoria física. Los procesos acceden a DSM para leer y actuali¬zar, dentro de sus espacios de direcciones, sobre lo que aparenta ser la memoria interna normal asignada a un proceso. Sin embargo, existe un sistema subyacente en tiempo de ejecución que asegura de forma transparente que procesos diferentes ejecutándose en computadores diferentes observen las actualizaciones realizadas entre ellas. Es como si 1os procesos accedieran a una única me-moria compartida, pero de hecho la memoria física está distribuida
La principal característica de DSM es que ahorra al programador todo lo concerniente al paso de mensajes al escribir sus aplicaciones, cuestión que en otro sistema debería tenerse muy presente. DSM es fundamentalmente una herramienta para aplicaciones paralelas o para aplicaciones o gru¬pos de aplicaciones distribuidas en las que se puede acceder directamente a datos individuales que ellas comparten. En general, DSM es menos apropiado para sistemas cliente-servidor, ya que los clientes ven al servidor como un gestor de recursos en forma de datos abstractos que se acceden a través de peticiones (por razones de modularidad y protección). Sin embargo, los servidores pue-den proporcionar DSM compartido entre los clientes. Por ejemplo, los archivos plasmados en me¬moria (memory mapped) que son compartidos y sobre los que se gestiona un cierto grado de con¬sistencia son una forma de DSM.
“Representan la creación híbrida de dos o más tipos de computación paralelos, la memoria distribuida en sistemas multiprocesador y los sistemas distribuidos.
Ellos proveen la abstracción de memoria compartida en sistemas con memorias distribuidas físicamente y consecuentemente combinan las mejores características de ambos enfoques. Debido a esto el concepto de memoria compartida distribuida es reconocido como uno de los enfoques más atractivos para la creación de sistemas escalables de alto rendimiento de sistemas multiprocesador”.
CONFIGURACIONES DE MEMORIA COMPARTIDA DISTRIBUIDA (DE CIRCUITOS, BASADA EN BUS, ANILLO O CON CONMUTADOR)
Entonces, las configuraciones de memoria compartida distribuida, pueden ser de varias formas: De circuitos, basada en bus, anillo o con conmutador. Y podemos apreciar dichas definiciones:
.
Memoria basada en circuitos:
Existe una única área de memoria y cada micro tiene su propio bus de datos y direcciones (en caso de no tenerlo se vuelve un esquema centralizado).
Multiprocesadores basados en un bus:
Para evitar que dos o más CPU’s intenten el acceso a la memoria al mismo tiempo, se necesita algún tipo de arbitraje del bus. El CPU debe pedir permiso para conseguir el bus. La concesión puede hacerse de forma centralizada, utilizando un dispositivo de arbitraje de bus, o de forma descentralizada, donde el primer CPU que realice una solicitud en el bus ganará cualquier conflicto.
En este esquema los micros comparten un bus de datos y direcciones por lo que es más barato de implementar, se necesita tener una memoria caché grande y sumamente rápida.
La desventaja es la sobrecarga del bus. Una solución sería equipar a cada CPU con un caché husmeador. Un protocolo en particular común es el de escritura a través del caché. Cuando un CPU lee por primera vez una palabra de memoria, esa palabra es llevada por el bus y guardada en el caché del CPU solicitante. Puede suceder que una palabra en particular se oculte en dos o más CPU al mismo tiempo.
Operación de lectura. Si la palabra no esta en el caché, entonces buscarla en la memoria y copiarla a su caché. Si la palabra esta en el caché, tomar el dato de ahí.
Operación de escritura: Si ningún CPU tiene la palabra en su caché, entonces la palabra es actualizada en memoria, como si el ocultamiento no hubiera sido utilizado. Si el CPU (que realiza la escritura) tiene la única copia de la palabra, se actualiza su caché y también la memoria mediante el bus. Si dos o más CPU tienen la palabra, entonces se actualiza la palabra en el caché y en la memoria, y se invalidan las entradas de esa palabra en los cachés de los otros CPU. Así la palabra sólo la tendrá la memoria y un colo caché. Una alternativa a invalidar otras entradas de caché es actualizarlas todas, pero esto puede resultar más lento. Una ventaja de este protocolo es que es fácil de entender e implantar, la desventaja es que todas las escrituras utilizan el bus. Existe otro tipo de protocolos como el protocolo de membresía. Una versión de este protocolo plantea lo siguiente. Se manejan bloques de caché, cada uno de los cuales puede estar en uno de los siguientes estados:
• INVALIDO: Este bloque de caché no contiene datos válidos.
• LIMPIO: La memoria está actualizada, el bloque puede estar en otros cachés.
• SUCIO: La memoria es incorrecta; ningún otro caché puede contener al bloque.
La palabra permanece el estado SUCIO hasta que se elimine del caché donde se encuentra en la actualidad por razones de espacio. En este momento, desaparece de todos los cachés y se escribe en la memoria.
Este protocolo tiene tres propiedades importantes:
La consistencia se logra haciendo que todos los cachés husmeen el bus. El protocolo se integra dentro de la unidad de administración de memoria. Todo el algoritmo se realiza en un ciclo de memoria.
La desventaja es que no funciona para multiprocesadores de mayor tamaño y nada es válido para la memoria compartida distribuida.
Multiprocesadores basados en un anillo:
Ejemplo: Memnet. En Memnet, un espacio de direcciones se divide en una parte privada y una compartida. La parte compartida se divide en bloques de 32 nbytes, unidad mediante la cual se realizan las transferencias entre las máquinas. Las máquinas Memnet están conectadas mediante un anillo de fichas modificado. El anillo consta de 20 cables paralelos, que juntos permiten enviar 16 bits de datos y 4 bits de control cada 100 nanosegundos, para una velocidad de datos de 160 Mb/seg.
Es más tolerante a fallos, no hay coordinador central y se privilegia el uso de la memoria más cercana.
Un bloque exclusivo de lectura puede estar presente en varias máquinas, uno de lectura-escritura debe estar presente en una sola máquina. Los bits en el dispositivo Memnet indican uno o más de los siguientes estados:
• VALIDO: El bloque esta presente en el caché y está actualizado.
• EXCLUSIVO: La copia local es la única.
• ORIGEN: Se activa si ésta es la máquina origen del bloque
• INTERRUPCION: Se utiliza para forzar interrupciones.
• POSICION: Indica la localización del bloque en el caché si esta presente y es válido. Protocolo Memnet.
• Lectura.
Cuando un CPU desea leer una palabra de la memoria compartida, la dirección de memoria por leer se transfiere al dispositivo Memnet, el cual verifica la tabla del bloque para ver si está presente. Si es así, la solicitud es satisfecha de inmediato. En caso contrario, el dispositivo Memnet espera hasta capturar la ficha que circula; después, cooca un paquete de solicitud en el anillo y suspende el CPU. El paquete de solicitud contiene la dirección deseada y un campo vacío de 32 bytes. Cada dispositivo Memnet en el anillo verifica si tiene el bloque. De ser así, coloca el bloque en el campo vacío y modifica el encabezado del paquete para inhibir la acción de las máquinas posteriores. Si el bit exclusivo del bloque está activo, se limpia. Cuando el paquete regresa al emisor, se garantiza que contiene al bloque solicitado. El CPU que envía la solicitud guarda el bloque, satisface la solicitud y libera al CPU. Si la máquina solicitante no tiene espacio libre en su caché para contener el bloque recibido, entonces toma al azar un bloque oculto y lo envía a su origen, con lo que libera un espacio de caché. Los bloques cuyo bit origen están activados nunca se eligen, pues se encuentran en su origen.
• Escritura.
Tenemos tres casos: a) Si el bloque contiene la palabra por escribir está presente y es la única copia en el sistema, (el bit exclusivo esta activado) la palabra solo se escribe de manera local. b) Si esta presente el bloque, pero no es la única copia, se envía primero un paquete de invalidación por el anillo para que las otras máquinas desechen sus copias del bloque por escribir. Cuando el paquete de invalidación regresa al solicitante, el bit exclusivo se activa para ese bloque y se procede a la escritura local. c) Si el bloque no está presente, se envía un paquete que combina una solicitud de lectura y una de invalidación. La primera máquina que tenga el bloque lo copia en el paquete y desecha su copia. Todas las máquinas posteriores solo desechan el bloque de sus cachés.Cuando el paquete regresa al emisor, éste lo guarda y escribe en él.
La ventaja de este protocolo es que se puede aplicar a multicomputadoras.
Principales Aproximaciones a DSM :
Existen tres aproximaciones a la implementación de memoria compartida distribuida, las cuales involucran el uso de hardware, memoria virtual o bibliotecas de soporte. Estos no son mutuamente exclusivas necesariamente.
Basada en hardware. Por ejemplo Dash y PLUS. El conjunto de procesadores y los módulos de memoria están conectados vía una red de alta velocidad. El problema es la escalabilidad.
Basado en páginas. Poe ejemplo Ivy, Munin, Mirage, Clouds, Choices, COOL y Mether, todas implanta DSM como una región de memoria virtual que ocupa el mismo rango de dirección en el espacio de direcciones de cada proceso participante. En cada caso el kernel mantiene la consistencia de datos dentro de las regiones DSM como parte del manejo de fallo de página.
Basado en bibliotecas. Algunos lenguajes o extensiones de lenguaje tales como ORCA y Linda soportan formas de DSM”.
MCD basada en conmutador:
Varios micros se conectan entre sí en forma de bus formando un grupo, los grupos están interconectados entre sí a través de un conmutador. Cuando se realiza una operación de memoria se intenta realizar dentro del grupo, de lo contrario pasa al conmutador para que lo redireccione a otro grupo. No existe un arquitectura de MCD óptima”.
MODELOS DE CONSISTENCIA (ESTRICTA, CAUSAL, SECUENCIAL, DÉBIL, DE LIBERACIÓN, Y DE ENTRADA)
Un modelo de consistencia es esencialmente un contrato entre procesos y el almacenamiento de datos. Es decir: si los procesos acuerdan obedecer ciertas reglas, el almacenamiento promete trabajar correctamente.
Normalmente un proceso que realiza una operación de lectura espera que esa operación devuelva un valor que refleje el resultado de la última operación de escritura sobre el dato.
En Informática, en un sistema distribuido, tales como una memoria compartida distribuida o almacenes de datos distribuido, tales como una base de datos, sistema de archivos, caché web o sistemas de replicación optimista, hay una serie de posibles modelos de consistencia de datos. Se dice que un sistema soporta un determinado modelo, si las operaciones en memoria siguen normas específicas. La consistencia de los datos es definida entre el programador y el sistema, que garantiza que si el programador sigue las reglas, la memoria será consistente y el resultado de las operaciones de memoria será predecible.
Los lenguajes de alto nivel, tales como C, C++ y Java, respetan parcialmente este modelo traduciendo operaciones de memoria en operaciones de bajo nivel para preservar la memoria semántica. Para mantener el modelo, los compiladores pueden reordenar algunas instrucciones de memoria, y las llamadas a las bibliotecas como pthread_mutex_lock(), encapsular la sincronización necesaria.
• Consistencia Casual
La condición a cumplir para que unos datos sean causalmente consistentes es:
Escrituras que están potencialmente relacionadas en forma causal deben ser vistas por todos los procesos en el mismo orden. Escrituras concurrentes pueden ser vistas en un orden diferente sobre diferentes máquinas. Es permitida con un almacenamiento causalmente consistente, pero no con un almacenamiento secuencialmente consistente o con un almacenamiento consistente en forma estricta.
Consistencia Secuencial
La consistencia secuencial es una forma ligeramente más débil de la consistencia estricta. Satisface la siguiente condición:
El resultado de una ejecución es el mismo si las operaciones (lectura y escritura) de todos los procesos sobre el dato fueron ejecutadas en algún orden secuencial.
Un dato almacenado secuencialmente consistente.
Un dato almacenado que no es secuencialmente consistente.
• Consistencia Débil
Los accesos a variables de sincronización asociadas con los datos almacenados son secuencialmente consistentes.
• Propiedades
No se permite operación sobre una variable de sincronización hasta que todas las escrituras previas de hayan completado.
No se permiten operaciones de escritura o lectura sobre datos hasta que no se hayan completado operaciones previas sobre variables de sincronización.
• Consistencia de Liberación
Se basa en el supuesto de que los accesos a variables compartidas se protegen en secciones críticas empleando primitivas de sincronización, como por ejemplo locks. En tal caso, todo acceso esta precedido por una operación adquiere y seguido por una operación release. Es responsabilidad del programador que esta propiedad se cumpla en todos los programas.
• Consistencia Estricta
Está definido por la siguiente condición: Cualquier lectura a una localidad de memoria x regresa el valor guardado por la operación de escritura más reciente en x Esta definición supone la existencia de un tiempo global absoluto (como en la física de Newton), para que la determinación del evento "más reciente" no sea ambigua. Esta consistencia es típica de sistemas uniprocesador, donde nunca se pueden presentar dos eventos simultáneamente. Sin embargo es prácticamente imposible de lograr en sistemas multiprocesador (distribuidos o no), debido a que pueden existir escrituras y lecturas en memoria separadas por espacios mínimos de tiempo que no alcanzan a cumplir la condición exigida
MEMORIA COMPARTIDA DISTRIBUIDA EN BASE A PÁGINAS (DISEÑO, RÉPLICA, GRANULADA, CONSISTENCIA, PROPIETARIO, Y COPIAS)
“El esquema de MCD propone un espacio de direcciones de memoria virtual que integre la memoria de todas las computadoras del sistema, y su uso mediante paginación. Las páginas quedan restringidas a estar necesariamente en un único ordenador. Cuando un programa intenta acceder a una posición virtual de memoria, se comprueba si esa página se encuentra de forma local. Si no se encuentra, se provoca un fallo de página, y el sistema operativo solicita la página al resto de computadoras. El sistema operativo, y en el caso del protocolo de consistencia de entrada, por acciones de sincronización explícitas dentro del código del usuario. El hecho que la especificación se encuentre dispersa dificulta tanto la incorporación de nuevos protocolos de consistencia como la modificación de los ya existentes, debido a que los componentes tienen además de su funcionalidad básica responsabilidades que no les corresponden”.
“Diseño básico: La idea DSM es sencilla: intentar emular la cache de un multiprocesador mediante MMU y el software de sistema operativo. En una DSM el espacio de direcciones se separa en pedazos los cuales están dispersos en todos los procesadores del sistema. Cuando un procesador hace referencia a una dirección que no es local, ocurre un señalamiento y el software DSM trae el pedazo que contiene la dirección y reinicia lainstrucción suspendida, que puede entonces concluir con éxito.
Replica: Una mejora al sistema básico, que ayuda al desempeño en gran medida, consiste en duplicarlos pedazos exclusivos para la lectura. Otra posibilidad es duplicar los pedazos exclusivos lectura y uno para lectura y escritura. Sin embargo si un pedazo duplicado súbitamente se modifica, hay que realizar una acción especial para evitar la existencia de varias copias inconsistentes.
Granularidad:
La primera implementación de un sistema de MCD basado en páginas fue Ivy. Otras posibilidades son los sistemas basados en variables compartidas y los basados en objetos. En los sistemas basados en páginas la granularidad de la memoria se delinea al nivel de página de memoria. Esto quiere decir que la mínima unidad reverenciable por el sistema de MCD es la página, no pudiendo hacer distinción entre variables distintas almacenadas en la misma página. A pesar de que el uso de una granularidad a nivel de pagina puede introducir problemas como el false sharing, también permite mantener el overhead producido por la administración de la memoria distribuida dentro de parámetros razonables. Esto se debe a que es posible hacer uso de las características del hardware para el manejo de la memoria virtual, disponibles en la mayoría de los computadores.
Búsqueda del propietario: La forma de encontrar al propietario de la página, es sencilla concite en realizar una transmisión y solicitar la respuesta del propietario de la pagina especificada. El propietario asido localizado de esta manera, el protocolo puede continuar de manera anterior. La optimización obvia concite no solo en preguntar quién es el propietario, si no también indicar si el emisor desea leer o escribir y si necesita una copia de la página. El propietario puede enviar entonces un mensaje, transfiriendo la propiedad y la pagina según sea necesario. La trasmisión tiene la desventaja de interrumpir a cada procesador, obligándolo a inspeccionarle paquee de solicitud. La transmisión puede utilizar un ancho de banda considerable según el hardware. Un problema con este protocolo es la carga potencial excesiva sobre el controlador de páginas, el cual maneja todas las solicitudes recibidas; este problema se resuelve con varios controladores de páginas en vez de uno.
Una solución sencilla consiste en utilizar los bits de menor orden del numo de páginas con un índice en una tabla de
Controladores.
Búsqueda de copias: Es la forma de localizar todas las copias cuando estas se invaliden. Hay dos posibilidades, la primera consiste en trasmitir un mensaje con un número de páginas y solicitar a todos los procesadores que contengan la pagina que la invaliden. Solo funcionan si los mensajes retransmisión son por completo confiables. La segunda posibilidad consiste en que el propietario o el controlador de páginas mantengan una lista de conjunto de copias, indicándolos procesos que posen tal o cual página”.
MEMORIA COMPARTIDA DISTRIBUIDA EN BASE A VARIABLES
"La compartición falsa se produce cuando dos procesos se pelean el acceso a la misma pagina de memoria, ya que contiene variables que requieren los dos, pero estas no son las mismas. Esto pasa por un mal diseño del tamaño de las paginas y por la poca relación existente entre variables de la misma pagina. En los MCD basados en variables se busca evitar la compartición falsa ejecutando un programa en cada CPU que se comunica con una central, la que le provee de variables compartidas, administrando este cualquier tipo de variable, poniendo variables grandes en varias paginas o en la misma pagina muchas variables del mismo tipo,en este protocolo es muy importante declarar las variables compartidas”.
DSM basada en variables compartidas destacando los siguientes aspectos: “– 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. … Por Ejemplo: Midway”.
La MCD en base a variables del siguiente modo: “En este esquema la granularidad es más fina ya que sólo se comparten variables que han sido marcados previamente en el código del programa. Tanto el compilador como el entorno de ejecución se encargan del acceso y compartición de las variables compartidas. Ejemplos: Munin y Midway Se recomienda la duplicación. Ésta puede ser parcial o total.
El Algoritmo de actualización es sumamente importante. No hay compartición falsa dado que todos los procesos acceden a datos protegidos y consistentes dado que la variable compartida monitoriza los accesos de escritura... Y con respecto a Munin: Se basa en objetos del software (usa MMU). Declaraciones con “shared”. Una variable compartida por página (por defecto). Instrucciones normales de lectura y escritura. No hay métodos de protección especiales. Se manejan regiones críticas. Clases de variables: Variables ordinarias. Variables de datos compartidos.
Variables de sincronización”
MEMORIA COMPARTIDA DISTRIBUIDA EN BASE A OBJETOS
“Una alternativa al uso de páginas es tomar el objeto como base de la transferencia de memoria. Aunque el control de la memoria resulta más complejo, el resultado es al mismo tiempo modular y flexible, y la sincronización y el acceso se pueden integrar limpiamente. Otra de las restricciones de este modelo es que todos los accesos a los objetos compartidos han de realizarse mediante llamadas a los métodos de los objetos, con lo que no se admiten programas no modulares y se consideran incompatibles “.
Sin embargo, la Memoria Compartida Distribuida Basada en Objetos, “puesto que en muchos lenguajes de programación los datos se encuentran organizados como objetos y no como variables simples, los sistemas de MCD basados en objetos intentan transportar datos por la red utilizando como unidad de manipulación el objeto y no las páginas o las variables. Los procesos que se ejecutan en los distintos computadores que componen el sistema tienen acceso a un espacio de objetos compartidos, en lugar de a un espacio lineal de direcciones. El sistema es responsable de la ubicación y administración de estos objetos compartidos. Un proceso puede invocar métodos de un objeto compartido, independientemente de la ubicación del proceso y del objeto. Los objetos están protegidos por el ocultamiento de información, por lo que los procesos no pueden acceder directamente al estado interno de ningún objeto compartido. Esto facilita algunas optimizaciones dentro del sistema. Por ejemplo, puede relajarse el modelo de consistencia sin que el programador tenga conocimiento alguno. Al igual que en el caso de la granularidad a nivel de variables compartidas, cuando se utiliza el objeto como unidad para compartir es posible eliminar el false sharing. Además, también en este caso es factible utilizar un protocolo de actualización en vez de uno de invalidación. Sin embargo, quizás la mayor ventaja de este modelo es su modularidad y flexibilidad, a la vez que permite una integración limpia con la sincronización. La principal desventaja es el aumento en el overhead que se produce por la manipulación aun más indirecta de la memoria. En realidad, este es un problema inherente al uso de objetos. Un ejemplo de un sistema de MCD basado en objetos es, un sistema basado en una memoria compartida altamente estructurada y que es accedida a través de un pequeño conjunto de primitivas que se agregan a lenguajes tradicionales como C y Fortran. El espacio de objetos se llama tuple space, o espacio de tuplas. Los procesos pueden insertar y remover tuplas al espacio, desde cualquier computador”.
“La DSM basada en objetos: Se comparten objetos y su Visión de memoria como objetos (válido para heterogeneidad) – Acceso a datos compartidos mediante métodos SET/GET
• Facilita control de accesos – Ejemplos: Orca, DiSOM”.
“La MCD en base a objetos, nace como respuesta a la creciente popularización de los lenguajes orientados por objetos. Los datos se organizan y son transportados en unidades de objetos, no unidades de páginas.
ADMINISTRADORES DE MEMORIAS EN CLÚSTERS
“El Modelo de programación en sistemas con memoria compartida se caracteriza por:
– Llamadas a procedimiento (o invocación de métodos) – Comunicación mediante datos compartidos
– Sincronización mediante semáforos. Y.
• Nuevo modelo de programación en sistemas distribuidos: – RPC (o RMI) + DSM.
• Memoria compartida distribuida (DSM):
– Memoria compartida implementada por software
– Simulada mediante paso de mensajes
– Comunicación con datos compartidos y sincronización con semáforos.
• Objetivo: – 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:
– Difícil manejar heterogeneidad”.
EQUIPO:
BOLÍVAR PÉREZ MENDOZA
ABEL PIOQUINTO UBIAS
EULISES ECHEVERRIA RODRIGUEZ
SERGIO ZAIR HERNÁNDEZ GÓMEZ
BOLIVAR- Invitado
Participacion
1.-Investigar y redactar los conceptos de la lista de palabras clave que contienen los siguientes temas:
MEMORIA COMPARTIDA DISTRIBUIDA
Los sistemas de memoria compartida distribuida (DSM) representan la creación hibrida de dos tipos de computación paralelos: la memoria distribuida en sistemas multiprocesador y los sistemas distribuidos. Ellos proveen la abstracción de memoria compartida en sistemas con memorias distribuidas físicamente y consecuentemente combinan las mejores características de ambos enfoques. Debido a esto, el concepto de memoria compartida distribuida es reconocido como uno de los enfoques más atractivos para la creación de sistemas escalables, de alto rendimiento de sistemas multiprocesador.
CONFIGURACION DE MEMORIA COMPARTIDA DISTRIBUIDA
Multiprocesadores basados en un bus.
Para evitar que dos o más CPU’s intenten el acceso a la memoria al mismo tiempo, se necesita algún tipo de arbitraje del bus. El CPU debe pedir permiso para conseguir el bus. La concesión puede hacerse de forma centralizada, utilizando un dispositivo de arbitraje de bus, o de forma descentralizada, donde el primer CPU que realice una solicitud en el bus ganará cualquier conflicto.
Multiprocesadores basados en un anillo
Ejemplo: Memnet
En Memnet, un espacio de direcciones se divide en una parte privada y una compartida. La parte compartida se divide en bloques de 32 bytes, unidad mediante la cual se realizan las transferencias entre las máquinas. Las máquinas Memnet están conectadas mediante un anillo de fichas modificado. El anillo consta de 20 cables paralelos, que juntos permiten enviar 16 bits de datos y 4 bits de control cada 100 nanosegundos, para una velocidad de datos de 160 Mb/seg. Un bloque exclusivo de lectura puede estar presente en varias máquinas, uno de lectura-escritura debe estar presente en una sola máquina.
Multiprocesadores con conmutador.
En anillo o bus, el hecho de añadir un CPU satura el ancho de banda del bus o anillo
Dos métodos para solucionar el problema:
1. Reducir la cantidad de comunicación
2. Incrementar la capacidad de comunicación
Una forma de reducir la cantidad de comunicación es el ocultamiento trabajo adicional en esta área:
Mejorar protocolo de ocultamiento
Optimizar el tamaño del bloque
Incrementar la localidad de las referencias a memoria.
MODELOS DE CONSISTENCIA
CONSISTENCIA CASUAL: La condición a cumplir para que unos datos sean causalmente consistentes es:
• Escrituras que están potencialmente relacionadas en forma causal deben ser vistas por todos los procesos en el mismo orden.
• Escrituras concurrentes pueden ser vistas en un orden diferente sobre diferentes máquinas.
Es permitida con un almacenamiento causalmente consistente, pero no con un almacenamiento secuencialmente consistente o con un almacenamiento consistente en forma estricta.
CONSISTENCIA SECUENCIAL: La consistencia secuencial es una forma ligeramente más débil de la consistencia estricta. Satisface la siguiente condición:
El resultado de una ejecución es el mismo si las operaciones (lectura y escritura) de todos los procesos sobre el dato fueron ejecutadas en algún orden secuencial
a) Un dato almacenado secuencialmente consistente.
b) Un dato almacenado que no es secuencialmente consistente.
CONSISTENCIA DÉBIL: Los accesos a variables de sincronización asociadas con los datos almacenados son secuencialmente consistentes.
Propiedades
No se permite operación sobre una variable de sincronización hasta que todas las escrituras previas de hayan completado.
No se permiten operaciones de escritura o lectura sobre datos hasta que no se hayan completado operaciones previas sobre variables de sincronización.
CONSISTECIA DE LIBERACION: Se basa en el supuesto de que los accesos a variables compartidas se protegen en secciones críticas empleando primitivas de sincronización, como por ejemplo locks. En tal caso, todo acceso esta precedido por una operación adquiere y seguido por una operación release. Es responsabilidad del programador que esta propiedad se cumpla en todos los programas.
MEMORIA COMPARTIDA BASADA EN PÁGINAS
El esquema de MCD propone un espacio de direcciones de memoria virtual que integre la memoria de todas las computadoras del sistema, y su uso mediante paginación. Las páginas quedan restringidas a estar necesariamente en un único ordenador. Cuando un programa intenta acceder a una posición virtual de memoria, se comprueba si esa página se encuentra de forma local. Si no se encuentra, se provoca un fallo de página, y el sistema operativo solicita la página al resto de computadoras.
Diseño
De la descripción del sistema DSM-PEPE, es evidente que la especificación de los protocolos que implementan los distintos modelos de consistencia de memoria se encuentra dispersa entre los componentes del sistema. Esto está relacionado con el hecho que los protocolos implementados desencadenan sus acciones de consistencia bajo distintas condiciones. En el caso del protocolo de consistencia secuencial, las acciones de consistencia se desencadenan a partir de faltas de página detectadas por el sistema operativo, y en el caso del protocolo de consistencia de entrada, por acciones de sincronización explícitas dentro del código del usuario.
Replica
1. Replicar los bloques de sólo lectura
2. Replicar todos los bloques: en este caso se tienen que tomar acciones para mantener la consistencia de los datos.
Granularidad
Los distintos tipos de grafo se diferencian por la granularidad de sus nodos y la información contenida en las aristas. En todos los casos, los nodos del grafocontienen un apuntador a una operación de la representación en WHIRL. A su vez, las operaciones de la representación intermedia también tienen asociado un apuntador que les va a permitir acceder al nodo correspondiente del grafo de dependencias. En el grafo de dependencias entre arrays, los nodos apuntan a operaciones de load y store sobre arrays, mientras que en el grafo de niveles de dependencia, los nodos apuntan a sentencias, que son elementos de mayor granularidad.
Consistencia
*Un modelo de consistencia de memoria (Mosberger 1993) especifica las garantías de consistencia que un sistema otorga sobre los valores que los procesos leen de los objetos, dado que en realidad acceden a una réplica de cada objeto y que múltiples procesos pueden actualizar los objetos.
*La principal interrogante que se plantea al caracterizar un modelo de consistencia de memoria es: cuándo se realiza un acceso de lectura sobre una posición de memoria, qué accesos de escritura son candidatos para que sus valores sean proporcionados en la lectura.
Propietario
El modelo de consistencia secuencial dice que todos los nodos deben ver las escrituras sobre una variable en el mismo orden. El protocolo secuencial implementado en DSM-PEPE funciona sobre la base de que en todo momento un nodo es el propietario (owner) de una página y es sólo él quien puede escribir en ella. En caso que alguien más desee escribir en ella, primero debe encontrar al propietario y solicitarle la página, en cuyo caso el nodo receptor pasa a ser el nuevo propietario. La información de los propietarios de cada página se mantiene como un atributo del objeto DSMPage, llamado probOwner, el cual indica quién es su probable propietario.
Copias
En el caso del protocolo de consistencia secuencial, se propone extraer de la especificación del objeto DSMPage la información relativa al probable propietario de la página y de los nodos que poseen copias de ella, ya que ésta es únicamente utilizada por el protocolo de consistencia secuencial, y extraer del msgMgrThread la funcionalidad relativa al protocolo de consistencia. Esto significa eliminar de la especificación del objeto DSMPage el atributo probOwner, y también los métodos que manejan la consistencia actualmente, ReadFault, WriteFault, RemoteReadFault, y RemoteWriteFault.
MCD EN BASE A VARIABLES
La compartición falsa se produce cuando dos procesos se pelean el acceso a la misma página de memoria, ya que contiene variables que requieren los dos, pero estas no son las mismas. Esto pasa por un mal diseño del tamaño de las páginas y por la poca relación existente entre variables de la misma página.
En los MCD basados en variables se busca evitar la compartición falsa ejecutando un programa en cada CPU que se comunica con una central, la que le provee de variables compartidas, administrando este cualquier tipo de variable, poniendo variables grandes en varias páginas o en la misma página muchas variables del mismo tipo, en este protocolo es muy importante declarar las variables compartidas.
MCD EN BASE A OBJETOS.
Una alternativa al uso de páginas es tomar el objeto como base de la transferencia de memoria. Aunque el control de la memoria resulta más complejo, el resultado es al mismo tiempo modular y flexible, y la sincronización y el acceso se pueden integrar limpiamente.
Otra de las restricciones de este modelo es que todos los accesos a los objetos compartidos han de realizarse mediante llamadas a los métodos de los objetos, con lo que no se admiten programas no modulares y se consideran incompatibles.
La administración de clúster, implica tomar medidas preventivas y planificar tareas. La administración implica los siguientes aspectos:
ADMINISTRADORES DE MEMORIAS EN CLUSTERS
El administrador de un clúster debe tomar en cuenta algunos aspectos, una vez que se ha completado la instalación de los recursos básicos de hardware y software. Estos aspectos incluyen la configuración e instalación de un sistema de archivos universal, la configuración y administración de recursos mediante herramientas implementadas en software; el monitoreo de sus actividades y el registro de cada uno de los eventos generados por la ejecución de cálculos computacionales.
• Registro de eventos.
• Monitoreo o medida del estado de los recursos del clúster.
• Recuperación ante fallos de hardware, software, incluyendo el sistema de archivos.
• Administración del registro de usuarios y grupos de usuarios, de los servicios del clúster (accounting).
• Planificación de tareas y balanceo de carga.
Equipo:
Karla Yesenia Macedonio Aburto
Itzia Nuñez Pineda
Ma. Guadalupe Vigueras Cabrera
Kassandra Garcia Pedroza
Alberto Quiroz Albarran
MEMORIA COMPARTIDA DISTRIBUIDA
Los sistemas de memoria compartida distribuida (DSM) representan la creación hibrida de dos tipos de computación paralelos: la memoria distribuida en sistemas multiprocesador y los sistemas distribuidos. Ellos proveen la abstracción de memoria compartida en sistemas con memorias distribuidas físicamente y consecuentemente combinan las mejores características de ambos enfoques. Debido a esto, el concepto de memoria compartida distribuida es reconocido como uno de los enfoques más atractivos para la creación de sistemas escalables, de alto rendimiento de sistemas multiprocesador.
CONFIGURACION DE MEMORIA COMPARTIDA DISTRIBUIDA
Multiprocesadores basados en un bus.
Para evitar que dos o más CPU’s intenten el acceso a la memoria al mismo tiempo, se necesita algún tipo de arbitraje del bus. El CPU debe pedir permiso para conseguir el bus. La concesión puede hacerse de forma centralizada, utilizando un dispositivo de arbitraje de bus, o de forma descentralizada, donde el primer CPU que realice una solicitud en el bus ganará cualquier conflicto.
Multiprocesadores basados en un anillo
Ejemplo: Memnet
En Memnet, un espacio de direcciones se divide en una parte privada y una compartida. La parte compartida se divide en bloques de 32 bytes, unidad mediante la cual se realizan las transferencias entre las máquinas. Las máquinas Memnet están conectadas mediante un anillo de fichas modificado. El anillo consta de 20 cables paralelos, que juntos permiten enviar 16 bits de datos y 4 bits de control cada 100 nanosegundos, para una velocidad de datos de 160 Mb/seg. Un bloque exclusivo de lectura puede estar presente en varias máquinas, uno de lectura-escritura debe estar presente en una sola máquina.
Multiprocesadores con conmutador.
En anillo o bus, el hecho de añadir un CPU satura el ancho de banda del bus o anillo
Dos métodos para solucionar el problema:
1. Reducir la cantidad de comunicación
2. Incrementar la capacidad de comunicación
Una forma de reducir la cantidad de comunicación es el ocultamiento trabajo adicional en esta área:
Mejorar protocolo de ocultamiento
Optimizar el tamaño del bloque
Incrementar la localidad de las referencias a memoria.
MODELOS DE CONSISTENCIA
CONSISTENCIA CASUAL: La condición a cumplir para que unos datos sean causalmente consistentes es:
• Escrituras que están potencialmente relacionadas en forma causal deben ser vistas por todos los procesos en el mismo orden.
• Escrituras concurrentes pueden ser vistas en un orden diferente sobre diferentes máquinas.
Es permitida con un almacenamiento causalmente consistente, pero no con un almacenamiento secuencialmente consistente o con un almacenamiento consistente en forma estricta.
CONSISTENCIA SECUENCIAL: La consistencia secuencial es una forma ligeramente más débil de la consistencia estricta. Satisface la siguiente condición:
El resultado de una ejecución es el mismo si las operaciones (lectura y escritura) de todos los procesos sobre el dato fueron ejecutadas en algún orden secuencial
a) Un dato almacenado secuencialmente consistente.
b) Un dato almacenado que no es secuencialmente consistente.
CONSISTENCIA DÉBIL: Los accesos a variables de sincronización asociadas con los datos almacenados son secuencialmente consistentes.
Propiedades
No se permite operación sobre una variable de sincronización hasta que todas las escrituras previas de hayan completado.
No se permiten operaciones de escritura o lectura sobre datos hasta que no se hayan completado operaciones previas sobre variables de sincronización.
CONSISTECIA DE LIBERACION: Se basa en el supuesto de que los accesos a variables compartidas se protegen en secciones críticas empleando primitivas de sincronización, como por ejemplo locks. En tal caso, todo acceso esta precedido por una operación adquiere y seguido por una operación release. Es responsabilidad del programador que esta propiedad se cumpla en todos los programas.
MEMORIA COMPARTIDA BASADA EN PÁGINAS
El esquema de MCD propone un espacio de direcciones de memoria virtual que integre la memoria de todas las computadoras del sistema, y su uso mediante paginación. Las páginas quedan restringidas a estar necesariamente en un único ordenador. Cuando un programa intenta acceder a una posición virtual de memoria, se comprueba si esa página se encuentra de forma local. Si no se encuentra, se provoca un fallo de página, y el sistema operativo solicita la página al resto de computadoras.
Diseño
De la descripción del sistema DSM-PEPE, es evidente que la especificación de los protocolos que implementan los distintos modelos de consistencia de memoria se encuentra dispersa entre los componentes del sistema. Esto está relacionado con el hecho que los protocolos implementados desencadenan sus acciones de consistencia bajo distintas condiciones. En el caso del protocolo de consistencia secuencial, las acciones de consistencia se desencadenan a partir de faltas de página detectadas por el sistema operativo, y en el caso del protocolo de consistencia de entrada, por acciones de sincronización explícitas dentro del código del usuario.
Replica
1. Replicar los bloques de sólo lectura
2. Replicar todos los bloques: en este caso se tienen que tomar acciones para mantener la consistencia de los datos.
Granularidad
Los distintos tipos de grafo se diferencian por la granularidad de sus nodos y la información contenida en las aristas. En todos los casos, los nodos del grafocontienen un apuntador a una operación de la representación en WHIRL. A su vez, las operaciones de la representación intermedia también tienen asociado un apuntador que les va a permitir acceder al nodo correspondiente del grafo de dependencias. En el grafo de dependencias entre arrays, los nodos apuntan a operaciones de load y store sobre arrays, mientras que en el grafo de niveles de dependencia, los nodos apuntan a sentencias, que son elementos de mayor granularidad.
Consistencia
*Un modelo de consistencia de memoria (Mosberger 1993) especifica las garantías de consistencia que un sistema otorga sobre los valores que los procesos leen de los objetos, dado que en realidad acceden a una réplica de cada objeto y que múltiples procesos pueden actualizar los objetos.
*La principal interrogante que se plantea al caracterizar un modelo de consistencia de memoria es: cuándo se realiza un acceso de lectura sobre una posición de memoria, qué accesos de escritura son candidatos para que sus valores sean proporcionados en la lectura.
Propietario
El modelo de consistencia secuencial dice que todos los nodos deben ver las escrituras sobre una variable en el mismo orden. El protocolo secuencial implementado en DSM-PEPE funciona sobre la base de que en todo momento un nodo es el propietario (owner) de una página y es sólo él quien puede escribir en ella. En caso que alguien más desee escribir en ella, primero debe encontrar al propietario y solicitarle la página, en cuyo caso el nodo receptor pasa a ser el nuevo propietario. La información de los propietarios de cada página se mantiene como un atributo del objeto DSMPage, llamado probOwner, el cual indica quién es su probable propietario.
Copias
En el caso del protocolo de consistencia secuencial, se propone extraer de la especificación del objeto DSMPage la información relativa al probable propietario de la página y de los nodos que poseen copias de ella, ya que ésta es únicamente utilizada por el protocolo de consistencia secuencial, y extraer del msgMgrThread la funcionalidad relativa al protocolo de consistencia. Esto significa eliminar de la especificación del objeto DSMPage el atributo probOwner, y también los métodos que manejan la consistencia actualmente, ReadFault, WriteFault, RemoteReadFault, y RemoteWriteFault.
MCD EN BASE A VARIABLES
La compartición falsa se produce cuando dos procesos se pelean el acceso a la misma página de memoria, ya que contiene variables que requieren los dos, pero estas no son las mismas. Esto pasa por un mal diseño del tamaño de las páginas y por la poca relación existente entre variables de la misma página.
En los MCD basados en variables se busca evitar la compartición falsa ejecutando un programa en cada CPU que se comunica con una central, la que le provee de variables compartidas, administrando este cualquier tipo de variable, poniendo variables grandes en varias páginas o en la misma página muchas variables del mismo tipo, en este protocolo es muy importante declarar las variables compartidas.
MCD EN BASE A OBJETOS.
Una alternativa al uso de páginas es tomar el objeto como base de la transferencia de memoria. Aunque el control de la memoria resulta más complejo, el resultado es al mismo tiempo modular y flexible, y la sincronización y el acceso se pueden integrar limpiamente.
Otra de las restricciones de este modelo es que todos los accesos a los objetos compartidos han de realizarse mediante llamadas a los métodos de los objetos, con lo que no se admiten programas no modulares y se consideran incompatibles.
La administración de clúster, implica tomar medidas preventivas y planificar tareas. La administración implica los siguientes aspectos:
ADMINISTRADORES DE MEMORIAS EN CLUSTERS
El administrador de un clúster debe tomar en cuenta algunos aspectos, una vez que se ha completado la instalación de los recursos básicos de hardware y software. Estos aspectos incluyen la configuración e instalación de un sistema de archivos universal, la configuración y administración de recursos mediante herramientas implementadas en software; el monitoreo de sus actividades y el registro de cada uno de los eventos generados por la ejecución de cálculos computacionales.
• Registro de eventos.
• Monitoreo o medida del estado de los recursos del clúster.
• Recuperación ante fallos de hardware, software, incluyendo el sistema de archivos.
• Administración del registro de usuarios y grupos de usuarios, de los servicios del clúster (accounting).
• Planificación de tareas y balanceo de carga.
Equipo:
Karla Yesenia Macedonio Aburto
Itzia Nuñez Pineda
Ma. Guadalupe Vigueras Cabrera
Kassandra Garcia Pedroza
Alberto Quiroz Albarran
AlbertoQ- Mensajes : 18
Fecha de inscripción : 06/05/2012
RETROALIMENTCION
Buenos dias compañero, espero se encuentren muy bien.
Saludos.
ATTE:
Mi retroalimentacion es para el equipo de mis compañeros Karla Yesenia Macedonio Aburto, Itzia Nuñez Pineda, Ma. Guadalupe Vigueras Cabrera, Kassandra Garcia Pedroza y Alberto Quiroz Albarran , Muy bien su participacion, una definicion concreta de los conceptos pedios por el frofesor M.C. Edgar Rangel Lugo, muy entendible y apreciable. Enhorabuena.
Saludos.
ATTE:
ABEL PIOQUINTO UBIAS
Abel_Apu- Invitado
REPLICA
Mi réplica va dirigida hacia mis compañeros BOLÍVAR PÉREZ MENDOZA, ABEL PIOQUINTO UBIAS, EULISES ECHEVERRIA RODRIGUEZ y SERGIO ZAIR HERNÁNDEZ GÓMEZ me parece muy buena su participación, la información es muy completa, felicidades:)
Karla Yesenia Macedonio Aburto
Karla Yesenia Macedonio Aburto
karlaY.- Invitado
REPLICA
Mi raplica va dirigida a mis compañeros Karla Yesenia Macedonio Aburto, Itzia Nuñez Pineda, Ma. Guadalupe Vigueras Cabrera, Kassandra Garcia Pedroza y Alberto Quiroz Albarran y de acuerdo a su publicacion me parece un muy buen aporte ya que explican claramente cada uno de los conceptos.
A T E N T A M E N T E
Eulises Echeverria Rodriguez
Eulises Echeverria Rodriguez
Rodrig- Invitado
Re: 4.- Memoria Compartida Distribuida(MCD)
MEMORIA COMPARTIDA DISTRIBUIDA (MCD)
Los sistemas de Memoria Compartida Distribuida (MCD), son sistemas que, mediante software, emulan semántica de memoria compartida sobre hardware que ofrece soporte solo para comunicación mediante paso de mensajes. Este modelo permite utilizar una red de estaciones de trabajo de bajo costo como una maquina paralela con grandes capacidades de procesamiento y amplia escalabilidad, siendo a la vez fácil de programar.
El objetivo principal de estos sistemas es permitir que un multicomputador pueda ejecutar programas escritos para un multiprocesador con memoria compartida
Cada uno de los nodos en un sistema de MCD aporta una parte de su memoria local para construir un espacio global de direcciones virtuales que será empleado por los procesos paralelos que se ejecuten en el sistema. El software de MCD se encarga de interceptar las referencias a memoria que hacen los procesos, y satisfacerlas, ya sea local o remotamente.
CONFIGURACIONES DE MEMORIA COMPARTIDA DISTRIBUIDA (DE CIRCUITOS, BASADA EN BUS, ANILLO O CON CONMUTADOR)
DE CIRCUITOS, BASADOS EN BUS, ANILLO O CON CONMUTADOR
Existen varias formas de implantar físicamente memoria compartida distribuida, a continuación se describen cada una de ellas.
Memoria basada en circuitos: Existe una única área de memoria y cada micro tiene su propio bus de datos y direcciones (en caso de no tenerlo se vuelve un esquema centralizado)
MCD basada en bus: En este esquema los micros comparten un bus de datos y direcciones por lo que es más barato de implementar, se necesita tener una memoria caché grande y sumamente rápida.
Multiprocesadores tipo bus.
Conexión entre CPU y memoria se hace a través de cables paralelos:
Dicha colección de cables se conoce con el nombre de bus.
Buses pueden ser parte del chip, pero en la mayoría de los sistemas los buses son externos y son usados para conectar circuitos impresos.
Una forma simple de construir multiprocesadores es conectarlos en un bus con más de un CPU.
MCD basada en anillos: Es más tolerante a fallos, no hay coordinador central y se privilegia el uso de la memoria más cercana.
Multiprocesadores basados en anillo.
Ejemplo Memnet: un espacio de direcciones se divide en una parte privada y otra compartida.
La parte privada:
Se divide en regiones cada máquina cuenta con memoria para su pila, datos y códigos no compartidos.
Parte compartida:
Común a todas las máquinas y se guarda de forma consistente mediante un protocolo de hardware parecido a los de bus se divide en bloques de 32 bytes, (unidad transferencia)
MCD basada en conmutador: Varios micros se conectan entre sí en forma de bus formando un grupo, los grupos están interconectados entre sí a través de un conmutador. Cuando se realiza una operación de memoria se intenta realizar dentro del grupo, de lo contrario pasa al conmutador para que lo redirecciones a otro grupo.
Multiprocesadores con conmutador.
En anillo o bus, el hecho de añadir un CPU satura el ancho de banda del bus o anillo
Dos métodos para solucionar el problema:
1. Reducir la cantidad de comunicación
2. Incrementar la capacidad de comunicación
Una forma de reducir la cantidad de comunicación es el ocultamiento trabajo adicional en esta área:
Sin embargo siempre se querrá añadir más CPUs y no habrá más ancho de banda en el bus.
MODELOS DE CONSISTENCIA (ESTRICTA, CAUSAL, SECUENCIAL, DÉBIL, DE LIBERACIÓN, Y DE ENTRADA)
Un modelo de consistencia de memoria especifica las garantías de consistencia que un sistema MCD realiza sobre los valores que los procesos leen desde los objetos, dado que en realidad acceden sobre una réplica de cada objeto y que múltiples procesos pueden actualizar los objetos.
La duplicidad de los bloques compartidos aumenta el rendimiento, pero produce un problema de consistencia entre las diferentes copias de la página en caso de una escritura.
ESTRICTA, CASUAL, SECUENCIAL, DEBIL, DE LIBERACION Y DE ENTRADA
CONSISTENCIA ESTRICTA: El modelo de consistencia más restrictivo es llamado consistencia estricta y es definido por la siguiente condición cualquier lectura sobre un ítem de dato X retorna un valor correspondiente con la más reciente escritura sobre X.
CONSISTENCIA CASUAL: Es un debilitamiento de la consistencia secuencial. Se hace una diferenciación entre eventos que están potencialmente relacionados en forma casual y aquellos que no.
La condición a cumplir para que unos datos sean casualmente consistentes es:
Escrituras que están potencialmente relacionados en forma casual deben ser vistas por todos los procesos en el mismo orden.
Esta secuencia es permitida con un almacenamiento casualmente consistente o con un almacenamiento consistente en forma estricta.
La condición a cumplir para que unos datos sean casualmente consistentes es: Escrituras que están potencialmente relacionadas en forma causal deben ser vistas por todos los procesos en el mismo orden.
Escrituras concurrentes pueden ser vistas en un orden diferente sobre diferentes máquinas.
Esta secuencia es permitida con un almacenamiento casualmente consistente, pero no con un almacenamiento secuencialmente consistente o con un almacenamiento consistente en forma estricta.
CONSISTENCIA SECUENCIAL: La consistencia secuencial es una forma ligeramente más débil de la consistencia estricta. Satisface la siguiente condición:
El resultado de una ejecución es el mismo si las operaciones (lectura y escritura) de todos los procesos sobre el dato fueron ejecutadas en algún orden secuencial y las operaciones de cada proceso individual aparecen en esta operaciones de cada proceso individual aparecen en esta secuencia en el orden especificado por su programa
a) Un dato almacenado secuencialmente consistente.
b) Un dato almacenado que no es secuencialmente consistente.
CONSISTENCIA DÉBIL: Los accesos a variables de sincronización asociadas con los datos almacenados son secuencialmente consistentes.
Propiedades:
No se permite operación sobre una variable de sincronización hasta que todas las escrituras previas de hayan completado. No se permiten operaciones de escritura o lectura sobre ítems de datos hasta que no se hayan completado operaciones previas sobre variables de sincronización.
CONSISTENCIA LIBERACIÓN (RELEASE): El modelo de consistencia release, RC, se basa en el supuesto de que los accesos a variables compartidas se protegen en secciones críticas empleando primitivas de sincronización, como por ejemplo locks. En tal caso, todo acceso esta precedido por una operación adquiere y seguido por una operación release. Es responsabilidad del programador que esta propiedad se cumpla en todos los programas.
Puesto que ningún otro proceso, ni local ni remoto, puede acceder a las variables que han sido modificadas mientras se encuentren protegidas en la sección critica, la actualización de cualquier modificación puede postergarse hasta el momento en que se lleva a cabo la operación reléase.
Propagación de Actualizaciones bajo RC y LRC de código sin proteger. En consecuencia obtuvo un valor inconsistente para la variable leída.
MEMORIA COMPARTIDA DISTRIBUIDA EN BASE A PÁGINAS (DISEÑO, RÉPLICA, GRANULADA, CONSISTENCIA, PROPIETARIO, Y COPIAS)
Cada CPU cuenta con su propia memoria y no pueden referenciar memoria remota directamente.
Cuando dirección CPU se encuentra en una página que reside en una máquina remota:
Se notifica al sistema operativo.
Sistema solicita dicha página con un mensaje.
Tanto ubicación como acceso son realizados a nivel software.
Ejemplos: IVY y Mirage
El esquema de MCD propone un espacio de direcciones de memoria virtual que integre la memoria de todas las computadoras del sistema, y su uso mediante paginación. Las páginas quedan restringidas a estar necesariamente en un único ordenador. Cuando un programa intenta acceder a una posición virtual de memoria, se comprueba si esa página se encuentra de forma local. Si no se encuentra, se provoca un fallo de página, y el sistema operativo solicita la página al resto de computadoras.
El sistema funciona de forma análoga al sistema de memoria virtual tradicional, pero en este caso los fallos de página se propagan al resto de ordenadores, hasta que la petición llega al ordenador que tiene la página virtual solicitada en su memoria local. A primera vista este sistema parece más eficiente que el acceso a la memoria virtual en disco, pero en la realidad ha mostrado ser un sistema demasiado lento en ciertas aplicaciones, ya que provoca un tráfico de páginas excesivo.
Una mejora dirigida a mejorar el rendimiento sugiere dividir el espacio de direcciones en una zona local y privada y una zona de memoria compartida, que se usará únicamente por procesos que necesiten compartir datos. Esta abstracción se acerca a la idea de programación mediante la declaración explícita de datos públicos y privados, y minimiza el envío de información, ya que sólo se enviarán los datos que realmente vayan a compartirse.
DISEÑO REPLICA GRANULARIDAD CONSISTENCIA
Hay dos razones principales para la replicación de datos:
Confiabilidad
Continuidad de trabajo ante caída de la réplica, mayor cantidad de copias mejor protección contra la corrupción de datos.
Rendimiento
El SD escala en número
Escala en área geográfica (disminuye el tiempo de acceso al dato) Consulta simultánea de los mismos datos.
GRANULARIDAD.
Se refiere a la especificidad a la que se define un nivel de detalle en una tabla, es decir, si hablamos de una jerarquía la granularidad empieza por la parte más alta de la jerarquía, siendo la granularidad mínima, el nivel más bajo.
MODELOS DE CONSISTENCIA.
Es esencialmente un contrato entre procesos y el almacenamiento de datos.
Es decir: si los procesos acuerdan obedecer ciertas reglas, el almacenamiento promete trabajar correctamente.
Normalmente un proceso que realiza una operación de lectura espera que esa operación devuelva un valor que refleje el resultado de la última operación de escritura sobre el dato.
Los modelos de consistencia se presentan divididos en dos conjuntos:
Modelos de consistencia centrados en los datos.
Modelos de consistencia centrados en el cliente.
MEMORIA COMPARTIDA DISTRIBUIDA EN BASE A VARIABLES
Munin:
Midway:
La compartición falsa se produce cuando dos procesos se pelean el acceso a la misma página de memoria, ya que contiene variables que requieren los dos, pero estas no son las mismas. Esto pasa por un mal diseño del tamaño de las páginas y por la poca relación existente entre variables de la misma página.
En los MCD basados en variables se busca evitar la compartición falsa ejecutando un programa en cada CPU que se comunica con una central, la que le provee de variables compartidas, administrando este cualquier tipo de variable, poniendo variables grandes en varias páginas o en la misma página muchas variables del mismo tipo, en este protocolo es muy importante declarar las variables compartidas.
En los MCD basados en objetos se busca el acceso a datos por medio de la encapsulación de la información. Y repartida a través de la red, estos objetos serán definidos por el Programador y las CPUs cambiaran los estados según procedan con los accesos.
MCD BASADA EN VARIABLES COMPARTIDAS
El problema del false sharing puede eliminarse si se utiliza una granularidad más tan fin tan fina, como las entidades que usualmente se comparten en los programas paralelos:
Las variables. De ser así, el problema ahora consiste en cómo mantener registro de las variables replicadas. Además, es probable que sea más conveniente utilizar una política de actualización y no de invalidación, puesto que en la implementación debe ser posible identificar escrituras a variables individuales.
MEMORIA COMPARTIDA DISTRIBUIDA EN BASE A OBJETOS
Nace como respuesta a la creciente popularización de los lenguajes orientados por objetos.
Los datos se organizan y son transportados en unidades de objetos, no unidades de páginas.
Es un modelo de programación de DSM de alto nivel.
Una alternativa al uso de páginas es tomar el objeto como base de la transferencia de memoria. Aunque el control de la memoria resulta más complejo, el resultado es al mismo tiempo modular y flexible, y la sincronización y el acceso se pueden integrar limpiamente. Otra de las restricciones de este modelo es que todos los accesos a los objetos compartidos han de realizarse mediante llamadas a los métodos de los objetos, con lo que no se admiten programas no modulares y se consideran incompatibles.
Un ejemplo de un sistema de MCD que utiliza una granularidad a nivel de variable compartida es Munin, una de las primeras implementaciones de MCD. Munin permite la ubicación de variables individuales en páginas diferentes, de modo que se pueda utilizar el hardware de paginación para identificar los accesos a las variables compartidas.
ADMINISTRADORES DE MEMORIAS EN CLÚSTERS
El Modelo de programación en sistemas con memoria compartida se caracteriza por:
Nuevo modelo de programación en sistemas distribuidos: – RPC (o RMI) + DSM.
Memoria compartida distribuida (DSM):
Objetivo:
Problemas:
Problema de coherencia:
Los sistemas de Memoria Compartida Distribuida (MCD), son sistemas que, mediante software, emulan semántica de memoria compartida sobre hardware que ofrece soporte solo para comunicación mediante paso de mensajes. Este modelo permite utilizar una red de estaciones de trabajo de bajo costo como una maquina paralela con grandes capacidades de procesamiento y amplia escalabilidad, siendo a la vez fácil de programar.
El objetivo principal de estos sistemas es permitir que un multicomputador pueda ejecutar programas escritos para un multiprocesador con memoria compartida
Cada uno de los nodos en un sistema de MCD aporta una parte de su memoria local para construir un espacio global de direcciones virtuales que será empleado por los procesos paralelos que se ejecuten en el sistema. El software de MCD se encarga de interceptar las referencias a memoria que hacen los procesos, y satisfacerlas, ya sea local o remotamente.
CONFIGURACIONES DE MEMORIA COMPARTIDA DISTRIBUIDA (DE CIRCUITOS, BASADA EN BUS, ANILLO O CON CONMUTADOR)
DE CIRCUITOS, BASADOS EN BUS, ANILLO O CON CONMUTADOR
Existen varias formas de implantar físicamente memoria compartida distribuida, a continuación se describen cada una de ellas.
Memoria basada en circuitos: Existe una única área de memoria y cada micro tiene su propio bus de datos y direcciones (en caso de no tenerlo se vuelve un esquema centralizado)
MCD basada en bus: En este esquema los micros comparten un bus de datos y direcciones por lo que es más barato de implementar, se necesita tener una memoria caché grande y sumamente rápida.
Multiprocesadores tipo bus.
Conexión entre CPU y memoria se hace a través de cables paralelos:
- Algunos transmiten las direcciones y datos que el CPU quiere leer o escribir
- Otros envían o reciben datos
- El resto para controlar las transferencias.
Dicha colección de cables se conoce con el nombre de bus.
Buses pueden ser parte del chip, pero en la mayoría de los sistemas los buses son externos y son usados para conectar circuitos impresos.
Una forma simple de construir multiprocesadores es conectarlos en un bus con más de un CPU.
MCD basada en anillos: Es más tolerante a fallos, no hay coordinador central y se privilegia el uso de la memoria más cercana.
Multiprocesadores basados en anillo.
Ejemplo Memnet: un espacio de direcciones se divide en una parte privada y otra compartida.
La parte privada:
Se divide en regiones cada máquina cuenta con memoria para su pila, datos y códigos no compartidos.
Parte compartida:
Común a todas las máquinas y se guarda de forma consistente mediante un protocolo de hardware parecido a los de bus se divide en bloques de 32 bytes, (unidad transferencia)
MCD basada en conmutador: Varios micros se conectan entre sí en forma de bus formando un grupo, los grupos están interconectados entre sí a través de un conmutador. Cuando se realiza una operación de memoria se intenta realizar dentro del grupo, de lo contrario pasa al conmutador para que lo redirecciones a otro grupo.
Multiprocesadores con conmutador.
En anillo o bus, el hecho de añadir un CPU satura el ancho de banda del bus o anillo
Dos métodos para solucionar el problema:
1. Reducir la cantidad de comunicación
2. Incrementar la capacidad de comunicación
Una forma de reducir la cantidad de comunicación es el ocultamiento trabajo adicional en esta área:
- Mejorar protocolo de ocultamiento
- Optimizar el tamaño del bloque
- Incrementar la localidad de las referencias a memoria.
Sin embargo siempre se querrá añadir más CPUs y no habrá más ancho de banda en el bus.
MODELOS DE CONSISTENCIA (ESTRICTA, CAUSAL, SECUENCIAL, DÉBIL, DE LIBERACIÓN, Y DE ENTRADA)
Un modelo de consistencia de memoria especifica las garantías de consistencia que un sistema MCD realiza sobre los valores que los procesos leen desde los objetos, dado que en realidad acceden sobre una réplica de cada objeto y que múltiples procesos pueden actualizar los objetos.
La duplicidad de los bloques compartidos aumenta el rendimiento, pero produce un problema de consistencia entre las diferentes copias de la página en caso de una escritura.
ESTRICTA, CASUAL, SECUENCIAL, DEBIL, DE LIBERACION Y DE ENTRADA
CONSISTENCIA ESTRICTA: El modelo de consistencia más restrictivo es llamado consistencia estricta y es definido por la siguiente condición cualquier lectura sobre un ítem de dato X retorna un valor correspondiente con la más reciente escritura sobre X.
CONSISTENCIA CASUAL: Es un debilitamiento de la consistencia secuencial. Se hace una diferenciación entre eventos que están potencialmente relacionados en forma casual y aquellos que no.
La condición a cumplir para que unos datos sean casualmente consistentes es:
Escrituras que están potencialmente relacionados en forma casual deben ser vistas por todos los procesos en el mismo orden.
Esta secuencia es permitida con un almacenamiento casualmente consistente o con un almacenamiento consistente en forma estricta.
La condición a cumplir para que unos datos sean casualmente consistentes es: Escrituras que están potencialmente relacionadas en forma causal deben ser vistas por todos los procesos en el mismo orden.
Escrituras concurrentes pueden ser vistas en un orden diferente sobre diferentes máquinas.
Esta secuencia es permitida con un almacenamiento casualmente consistente, pero no con un almacenamiento secuencialmente consistente o con un almacenamiento consistente en forma estricta.
CONSISTENCIA SECUENCIAL: La consistencia secuencial es una forma ligeramente más débil de la consistencia estricta. Satisface la siguiente condición:
El resultado de una ejecución es el mismo si las operaciones (lectura y escritura) de todos los procesos sobre el dato fueron ejecutadas en algún orden secuencial y las operaciones de cada proceso individual aparecen en esta operaciones de cada proceso individual aparecen en esta secuencia en el orden especificado por su programa
a) Un dato almacenado secuencialmente consistente.
b) Un dato almacenado que no es secuencialmente consistente.
CONSISTENCIA DÉBIL: Los accesos a variables de sincronización asociadas con los datos almacenados son secuencialmente consistentes.
Propiedades:
No se permite operación sobre una variable de sincronización hasta que todas las escrituras previas de hayan completado. No se permiten operaciones de escritura o lectura sobre ítems de datos hasta que no se hayan completado operaciones previas sobre variables de sincronización.
CONSISTENCIA LIBERACIÓN (RELEASE): El modelo de consistencia release, RC, se basa en el supuesto de que los accesos a variables compartidas se protegen en secciones críticas empleando primitivas de sincronización, como por ejemplo locks. En tal caso, todo acceso esta precedido por una operación adquiere y seguido por una operación release. Es responsabilidad del programador que esta propiedad se cumpla en todos los programas.
Puesto que ningún otro proceso, ni local ni remoto, puede acceder a las variables que han sido modificadas mientras se encuentren protegidas en la sección critica, la actualización de cualquier modificación puede postergarse hasta el momento en que se lleva a cabo la operación reléase.
Propagación de Actualizaciones bajo RC y LRC de código sin proteger. En consecuencia obtuvo un valor inconsistente para la variable leída.
MEMORIA COMPARTIDA DISTRIBUIDA EN BASE A PÁGINAS (DISEÑO, RÉPLICA, GRANULADA, CONSISTENCIA, PROPIETARIO, Y COPIAS)
Cada CPU cuenta con su propia memoria y no pueden referenciar memoria remota directamente.
Cuando dirección CPU se encuentra en una página que reside en una máquina remota:
Se notifica al sistema operativo.
Sistema solicita dicha página con un mensaje.
Tanto ubicación como acceso son realizados a nivel software.
Ejemplos: IVY y Mirage
El esquema de MCD propone un espacio de direcciones de memoria virtual que integre la memoria de todas las computadoras del sistema, y su uso mediante paginación. Las páginas quedan restringidas a estar necesariamente en un único ordenador. Cuando un programa intenta acceder a una posición virtual de memoria, se comprueba si esa página se encuentra de forma local. Si no se encuentra, se provoca un fallo de página, y el sistema operativo solicita la página al resto de computadoras.
El sistema funciona de forma análoga al sistema de memoria virtual tradicional, pero en este caso los fallos de página se propagan al resto de ordenadores, hasta que la petición llega al ordenador que tiene la página virtual solicitada en su memoria local. A primera vista este sistema parece más eficiente que el acceso a la memoria virtual en disco, pero en la realidad ha mostrado ser un sistema demasiado lento en ciertas aplicaciones, ya que provoca un tráfico de páginas excesivo.
Una mejora dirigida a mejorar el rendimiento sugiere dividir el espacio de direcciones en una zona local y privada y una zona de memoria compartida, que se usará únicamente por procesos que necesiten compartir datos. Esta abstracción se acerca a la idea de programación mediante la declaración explícita de datos públicos y privados, y minimiza el envío de información, ya que sólo se enviarán los datos que realmente vayan a compartirse.
DISEÑO REPLICA GRANULARIDAD CONSISTENCIA
Hay dos razones principales para la replicación de datos:
Confiabilidad
Continuidad de trabajo ante caída de la réplica, mayor cantidad de copias mejor protección contra la corrupción de datos.
Rendimiento
El SD escala en número
Escala en área geográfica (disminuye el tiempo de acceso al dato) Consulta simultánea de los mismos datos.
GRANULARIDAD.
Se refiere a la especificidad a la que se define un nivel de detalle en una tabla, es decir, si hablamos de una jerarquía la granularidad empieza por la parte más alta de la jerarquía, siendo la granularidad mínima, el nivel más bajo.
MODELOS DE CONSISTENCIA.
Es esencialmente un contrato entre procesos y el almacenamiento de datos.
Es decir: si los procesos acuerdan obedecer ciertas reglas, el almacenamiento promete trabajar correctamente.
Normalmente un proceso que realiza una operación de lectura espera que esa operación devuelva un valor que refleje el resultado de la última operación de escritura sobre el dato.
Los modelos de consistencia se presentan divididos en dos conjuntos:
Modelos de consistencia centrados en los datos.
Modelos de consistencia centrados en el cliente.
MEMORIA COMPARTIDA DISTRIBUIDA EN BASE A VARIABLES
Munin:
- Consistencia de liberación.
- Protocolos múltiples.
- Directorios.
- Sincronización.
Midway:
- Consistencia de entrada.
- Implementación.
La compartición falsa se produce cuando dos procesos se pelean el acceso a la misma página de memoria, ya que contiene variables que requieren los dos, pero estas no son las mismas. Esto pasa por un mal diseño del tamaño de las páginas y por la poca relación existente entre variables de la misma página.
En los MCD basados en variables se busca evitar la compartición falsa ejecutando un programa en cada CPU que se comunica con una central, la que le provee de variables compartidas, administrando este cualquier tipo de variable, poniendo variables grandes en varias páginas o en la misma página muchas variables del mismo tipo, en este protocolo es muy importante declarar las variables compartidas.
En los MCD basados en objetos se busca el acceso a datos por medio de la encapsulación de la información. Y repartida a través de la red, estos objetos serán definidos por el Programador y las CPUs cambiaran los estados según procedan con los accesos.
MCD BASADA EN VARIABLES COMPARTIDAS
El problema del false sharing puede eliminarse si se utiliza una granularidad más tan fin tan fina, como las entidades que usualmente se comparten en los programas paralelos:
Las variables. De ser así, el problema ahora consiste en cómo mantener registro de las variables replicadas. Además, es probable que sea más conveniente utilizar una política de actualización y no de invalidación, puesto que en la implementación debe ser posible identificar escrituras a variables individuales.
MEMORIA COMPARTIDA DISTRIBUIDA EN BASE A OBJETOS
Nace como respuesta a la creciente popularización de los lenguajes orientados por objetos.
Los datos se organizan y son transportados en unidades de objetos, no unidades de páginas.
Es un modelo de programación de DSM de alto nivel.
Una alternativa al uso de páginas es tomar el objeto como base de la transferencia de memoria. Aunque el control de la memoria resulta más complejo, el resultado es al mismo tiempo modular y flexible, y la sincronización y el acceso se pueden integrar limpiamente. Otra de las restricciones de este modelo es que todos los accesos a los objetos compartidos han de realizarse mediante llamadas a los métodos de los objetos, con lo que no se admiten programas no modulares y se consideran incompatibles.
Un ejemplo de un sistema de MCD que utiliza una granularidad a nivel de variable compartida es Munin, una de las primeras implementaciones de MCD. Munin permite la ubicación de variables individuales en páginas diferentes, de modo que se pueda utilizar el hardware de paginación para identificar los accesos a las variables compartidas.
ADMINISTRADORES DE MEMORIAS EN CLÚSTERS
El Modelo de programación en sistemas con memoria compartida se caracteriza por:
- Llamadas a procedimiento (o invocación de métodos).
- Comunicación mediante datos compartidos.
- Sincronización mediante semáforos.
Nuevo modelo de programación en sistemas distribuidos: – RPC (o RMI) + DSM.
Memoria compartida distribuida (DSM):
- Memoria compartida implementada por software.
- Simulada mediante paso de mensajes.
- Comunicación con datos compartidos y sincronización con semáforos.
Objetivo:
- 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
- Difícil manejar heterogeneidad.
Anayeli Torres Jaramillo
Guadalupe Castro Vargas
Luis Angel Zapata Perez
Reynaldo Muñoz Rafael
Guadalupe Castro Vargas
Luis Angel Zapata Perez
Reynaldo Muñoz Rafael
angel zapata- Mensajes : 23
Fecha de inscripción : 27/03/2012
retroalimentacion
Mi retroalimentacion va dirigida para el equipo de bolivar, abel, eulises y sergio, hicieron un muy buen trabajo, los temas estan bien explicados, con un buen contenido de informacion. Muchas felicidades a mis compañeros.
Atte:
Luis Angel Zapata Perez
Luis Angel Zapata Perez
angel zapata- Mensajes : 23
Fecha de inscripción : 27/03/2012
Replica
Mi replica va dirijida al equipo de Luis angel e integrantes, creo que su informacion es buena, concreta en varios sentidos, explica de manera clara los conceptos, en general es buena su participacion, solo por ahi en la cuestion del formato les falto resaltar algunos conceptos ya que a veces se pierde entre la demas informacion, fuera de eso muy bien.
Att: Alberto Quiroz Albarran
Att: Alberto Quiroz Albarran
AlbertoQ- Mensajes : 18
Fecha de inscripción : 06/05/2012
Participacion
Mi replica va para la compañera Anayeli Torres Jaramillo y equipo, pienso que su trabajo es bueno, explicando de manera concreta los conceptos que se piden, la información es clara y fácil de comprender, solo que dejaron mucho espacio entre algunos conceptos y asi, pero buen trabajo.
ATT: Itzia Nuñes Pineda
ATT: Itzia Nuñes Pineda
itzianp- Invitado
Replica
Mi replica es para el equipo de los compañeros Anayeli Torres Jaramillo, Guadalupe Castro Vargas, Luis Angel Zapata Perez y Reynaldo Muñoz Rafael. En su articipacion explican de manera amplia y correcta lo pedido en el reactivo, ademas de que es informacion comprendible.
Muy bien compañeros
ATTE: SERGIO ZAIR HERNANDEZ GOMEZ
Muy bien compañeros
ATTE: SERGIO ZAIR HERNANDEZ GOMEZ
Sergio H- Invitado
RETROALIMENTACION
Mi retroalimentación va dirigida al equipo de mis compañeros ANAYELI TORRES JARAMILLO, GUADALUPE CASTRO VARGAS, REYNALDO MUÑOZ RAFAEL Y LUIS ANGEL ZAPATA PEREZ ya que su participación me parece muy buena, explican muy bien los temas y presentan información entendible, muy buena participación ingenieros.
BOLIVAR- Invitado
retroalimentacion
mi replica es para el equipo del compañero bolivar perez mendoza ya que estoy de acuerdo con su informacion es muy concreta y muy entendible
Anayeli- Invitado
replica
mi replica va dirigida al equipo integrado por los compañeros Karla Yesenia Macedonio Aburto, Itzia Nuñez Pineda, Ma. Guadalupe Vigueras Cabrera, Kassandra Garcia Pedroza y Alberto Quiroz Albarran su participación me parece muy buena ya que explicaron todo claramente cada uno de los conceptos es entendible
felicidades compañeros
felicidades compañeros
lupita c- Invitado
Participación Reactivo #1
1.-Investigar y redactar los conceptos de la lista de palabras clave que contienen los siguientes temas:
MEMORIA COMPARTIDA DISTRIBUIDA (MCD)
La memoria compartida distribuida (DSM) es una abstracción utilizada para compartir datos entre computadores que no comparten memoria física. Los procesos acceden a DSM para leer y actualizar, dentro de sus espacios de direcciones, sobre lo que aparenta ser la memoria interna normal asignada a un proceso. Sin embargo, existe un sistema subyacente en tiempo de ejecución que asegura de forma transparente que procesos diferentes ejecutándose en computadores diferentes observen las actualizaciones realizadas entre ellas. Es como si los procesos accedieran a una única me¬moria compartida, pero de hecho la memoria física está distribuida.
La principal característica de DSM es que ahorra al programador todo lo concerniente al paso de mensajes al escribir sus aplicaciones, cuestión que en otro sistema debería tenerse muy presente. DSM es fundamentalmente una herramienta para aplicaciones paralelas o para aplicaciones o gru¬pos de aplicaciones distribuidas en las que se puede acceder directamente a datos individuales que ellas comparten. En general, DSM es menos apropiado para sistemas cliente-servidor, ya que los clientes ven al servidor como un gestor de recursos en forma de datos abstractos que se acceden a través de peticiones (por razones de modularidad y protección). Sin embargo, los servidores pueden proporcionar DSM compartido entre los clientes. Por ejemplo, los archivos plasmados en memoria (memory mapped) que son compartidos y sobre los que se gestiona un cierto grado de consistencia son una forma de DSM.
4.1 Configuraciones Memoria Compartida Distribuida
COMPUTACIÓN PARALELA
Un computador paralelo es un conjunto de procesadores capaces de cooperar en la solución de un problema.
El problema se divide en partes. Cada parte se compone de un conjunto de instrucciones. Las instrucciones de cada parte se ejecutan simultáneamente en diferentes CPUs.
Técnicas computacionales que descomponen un problema en sus tareas y pistas que pueden ser computadas en diferentes máquinas o elementos de proceso al mismo tiempo.
Arquitecturas de MCD
Existen varias formas de implantar físicamente memoria compartida distribuida, a continuación se describen cada una de ellas.
Memoria basada en circuitos: Existe una única área de memoria y cada micro tiene su propio bus de datos y direcciones (en caso de no tenerlo se vuelve un esquema centralizado)
MCD basada en bus: En este esquema los micros comparten un bus de datos y direcciones por lo que es más barato de implementar, se necesita tener una memoria caché grande y sumamente rápida.
MCD basada en anillos: Es más tolerante a fallos, no hay coordinador central y se privilegia el uso de la memoria más cercana
MCD basada en conmutador: Varios micros se conectan entre sí en forma de bus formando un grupo, los grupos están interconectados entre sí a través de un conmutador.
4.2 Modelos de Consistencia.
La cuestión de la consistencia adquiere importancia en los sistemas DSM que replican el contenido de la memoria compartida mediante su almacenamiento en las cachés de computadores separados. Cada proceso tiene un gestor de réplicas local, el cual está encargado de mantener copias en caché para los objetos. En la mayor parte de las implementaciones, los datos se leen desde las réplicas locales por cuestiones de eficiencia, pero las actualizaciones deben propagarse al resto de gestores de réplica.
Consistencia Estricta
Cualquier lectura a una localidad de memoria x regresa el valor guardado por la operación de reescritura más reciente. La existencia de tiempo global es implícita para que el más reciente no sea ambiguo. Es el modelo de programación ideal, pero es casi imposible implantarla en un sistema distribuido. Los programadores suelen controlar bien los modelos más débiles. Es la más restrictiva, pero debido a que su implantación en un sistema DSM es en esencia imposible, nunca se utiliza
Consistencia Causal
El modelo de consistencia causal determina las actualizaciones que deben propagarse de acuerdo a una relación de causalidad entre los accesos a memoria. La consistencia secuencial requiere que todos los procesadores estén de acuerdo en el orden de los efectos observados. La consistencia causal requiere que todos los procesadores estén de acuerdo en el orden de aquellos efectos causalmente relacionados, pero permite que los eventos no relacionados, llamados concurrentes, sean vistos en órdenes diferentes.
Consistencia secuencial
La consistencia secuencial es una forma ligeramente más débil de la consistencia estricta. Satisface la siguiente condición:
El resultado de una ejecución es el mismo si las operaciones (lectura y escritura) de todos los procesos sobre el dato fueron ejecutadas en algún orden secuencial
a) Un dato almacenado secuencialmente consistente.
b) Un dato almacenado que no es secuencialmente consistente.
Consistencia débil
Los accesos a variables de sincronización asociadas con los datos almacenados son secuencialmente consistentes.
Propiedades
No se permite operación sobre una variable de sincronización hasta que todas las escrituras previas de hayan completado.
No se permiten operaciones de escritura o lectura sobre datos hasta que no se hayan completado operaciones previas sobre variables de sincronización.
Consistencia de Liberación
Requiere que el programador (compilador) utilice al principio y al final de cada sección critica la adquisición y la liberación respectivamente. La consistencia de liberación proporciona estos dos tipos:
Los accesos de adquisición indican a la memoria del sistema que está a punto de entrar a una región crítica.
Los accesos de liberación dice que acaba de salir de una región crítica. Estos accesos se implantan como operaciones ordinarias sobre variables o como operaciones especiales. La adquisición y liberación no tienen que aplicarse a toda la memoria, si no que protegen solo algunas variables compartidas específicas, en cuyo caso sólo éstas se mantienen consistentes.
Consistencia de Entrada
El modelo de consistencia de entrada requiere que cada variable compartida ordinaria se asocie con alguna variable de sincronización, como una cerradura o una barrera. Si se quiere utilizar de forma individual en paralelo a los elementos de un arreglo, entonces los diferentes elementos del arreglo deben asociarse con cerraduras diferentes. Cuando se realiza una adquisición sobre una variable de sincronización, sólo se pide la consistencia de las variables compartidas ordinarias protegidas por esa variable desincronización. Difiere de la consistencia de liberación con laxitud en el hecho de que la segunda no asócialas variables compartidas con cerraduras o barreras y en el momento de la adquisición debe terminar de manera empírica las variables que necesita
4.3 MCD En Base A Páginas
El esquema de MCD propone un espacio de direcciones de memoria virtual que integre la memoria de todas las computadoras del sistema, y su uso mediante paginación. Las páginas quedan restringidas a estar necesariamente en un único ordenador. Cuando un programa intenta acceder a una posición virtual de memoria, se comprueba si esa página se encuentra de forma local. Si no se encuentra, se provoca un fallo de página, y el sistema operativo solicita la página al resto de computadoras.
El sistema funciona de forma análoga al sistema de memoria virtual tradicional, pero en este caso los fallos de página se propagan al resto de ordenadores, hasta que la petición llega al ordenador que tiene la página virtual solicitada en su memoria local. A primera vista este sistema parece más eficiente que el acceso a la memoria virtual en disco, pero en la realidad ha mostrado ser un sistema demasiado lento en ciertas aplicaciones, ya que provoca un tráfico de páginas excesivo.
Una mejora dirigida a mejorar el rendimiento sugiere dividir el espacio de direcciones en una zona local y privada y una zona de memoria compartida, que se usará únicamente por procesos que necesiten compartir datos. Esta abstracción se acerca a la idea de programación mediante la declaración explícita de datos públicos y privados, y minimiza el envío de información, ya que sólo se enviarán los datos que realmente vayan a compartirse.
Diseño básico.
La idea DSM es sencilla: intentar emular la cache de un multiprocesador mediante MMU y el software de sistema operativo. En una DSM el espacio de direcciones se separa en pedazos los cuales están dispersos en todos los procesadores del sistema. Cuando un procesador hace referencia a una dirección que no es local, ocurre un señalamiento y el software DSMtrae el pedazo que contiene la dirección y reinicia la instrucción suspendida, que puede entonces concluir con éxito.
Replica.
Una mejora al sistema básico, que ayuda al desempeño en gran medida, consiste en duplicarlos pedazos exclusivos para la lectura. Otra posibilidad es duplicar los pedazos exclusivos lectura y uno para lectura y escritura. Sin embargo si un pedazo duplicado súbitamente se modifica, hay que realizar una acción especial para evitar la existencia de varias copias inconsistentes.
Granularidad.
La primera implementación de un sistema de MCD basado en páginas fue Ivy. Otras posibilidades son los sistemas basados en variables compartidas y los basados en objetos. En los sistemas basados en páginas la granularidad de la memoria se delinea al nivel de página de memoria. Esto quiere decir que la mínima unidad reverenciable por el sistema de MCD es la página, no pudiendo hacer distinción entre variables distintas almacenadas en la misma página. A pesar de que el uso de una granularidad a nivel de página puede introducir problemas como el false sharing, también permite mantener el overhead producido por la administración de la memoria distribuida dentro de parámetros razonables. Esto se debe a que es posible hacer uso de las características del hardware para el manejo de la memoria virtual, disponibles en la mayoría de los computadores.
Consistencia.
En Informática, en un sistema distribuido, tales como una memoria compartida distribuida o almacenes de datos distribuido, tales como una base de datos, sistema de archivos, caché web o sistemas de replicación optimista, hay una serie de posibles modelos de consistencia de datos. Se dice que un sistema soporta un determinado modelo, si las operaciones en memoria siguen normas específicas. La consistencia de los datos es definida entre el programador y el sistema, que garantiza que si el programador sigue las reglas, la memoria será consistente y el resultado de las operaciones de memoria será predecible.
Los lenguajes de alto nivel, tales como C, C++ y Java, respetan parcialmente este modelo traduciendo operaciones de memoria en operaciones de bajo nivel para preservar la memoria semántica. Para mantener el modelo, los compiladores pueden reordenar algunas instrucciones de memoria, y las llamadas a las bibliotecas como pthread_mutex_lock(), encapsular la sincronización necesaria.
Tipos de Consistencia:
• Consistencia secuencial
• Consistencia de causalidad
• Consistencia liberada
• Consistencia eventual
• Consistencia delta
• Consistencia PRAM (también conocido como consistencia FIFO)
• Consistencia débil
• Consistencia vector campo
Búsqueda del propietario
La forma de encontrar al propietario de la página, es sencilla concite en realizar una transmisión y solicitar la respuesta del propietario de la página especificada. El propietario asido localizado de esta manera, el protocolo puede continuar de manera anterior. La optimización obvia concite no solo en preguntar quién es el propietario, si no también indicar si el emisor desea leer o escribir y si necesita una copia de la página. El propietario puede enviar entonces un mensaje, transfiriendo la propiedad y la pagina según sea necesario. La trasmisión tiene la desventaja de interrumpir a cada procesador, obligándolo a inspeccionarle paquee de solicitud. La transmisión puede utilizar un ancho de banda considerable según el hardware.
Un problema con este protocolo es la carga potencial excesiva sobre el controlador de páginas, el cual maneja todas las solicitudes recibidas; este problema se resuelve con varios controladores de páginas en vez de uno. Una solución sencilla consiste en utilizar los bits de menor orden del numo de páginas con un índice en una tabla de controladores.
Búsqueda de copias
Es la forma de localizar todas las copias cuando estas se invaliden. Hay dos posibilidades, la primera consiste en trasmitir un mensaje con un número de páginas y solicitar a todos los procesadores que contengan la página que la invaliden. Solo funcionan si los mensajes retransmisión son por completo confiables. La segunda posibilidad consiste en que el propietario o el controlador de páginas mantengan una lista de conjunto de copias, indicándolos procesos que poseen tal o cual página
4.4 MCD en base a variables
En los MCD basados en variables busca evitar la compartición falsa ejecutando un programa en cada CPU que se comunica con una central, la que le provee de variables compartidas, administrando este cualquier tipo de variable, poniendo variables grandes en varias páginas o en la misma página muchas variables del mismo tipo, en este protocolo es muy importante declarar las variables compartidas.
La compartición falsa se produce cuando dos procesos se pelean el acceso a la misma página de memoria, ya que contiene variables que requieren los dos, pero estas no son las mismas. Esto pasa por un mal diseño del tamaño de las páginas y por la poca relación existente entre variables de la misma página.
En este esquema la granularidad es más fina ya que sólo se comparten variables que han sido marcados previamente en el código del programa.
Tanto el compilador como el entorno de ejecución se encargan del acceso y compartición de las variables compartidas.
Clases de variables:
• Variables ordinarias.
• Variables de datos compartidos.
• Variables de sincronización.
Categorías de variables:
• Exclusiva para lectura.
• Migratoria.
• De escritura compartida.
• Convencional.
4.5 MCD en base a objetos
En los MCD basados en objetos se busca el acceso a datos por medio de la encapsulación de la información y repartida a través de la red, estos objetos serán definidos por el Programador y las CPU´s cambiaran los estados según procedan con los accesos. Nace como respuesta a la creciente popularización de los lenguajes orientados por objetos. Los datos se organizan y son transportados en unidades de objetos, no unidades de páginas
Ventajas:
• Es más modular que otras técnicas.
• La implementación es más flexible por que los accesos son controlados. Sincronización y accesos se pueden integrar juntos, más fácilmente
Desventajas:
• No corre en viejos programas para multiprocesadores.
• Los accesos se deben hacer invocando a los accesos, lo que significa más trabajo que los métodos de páginas compartidas.
4.6 Administradores de memorias en clusters
Un cluster debe comportarse como una sola máquina. Ambientes de gestión de recursos (PBS, SGE) y otro tipo de enfoques como Mosix, cumplen con este propósito desde el punto de vista de utilización.
Las herramientas de instalación también facilitan la construcción del cluster. Sin embargo, la administración aún se realiza nodo a nodo.
El administrador de un cluster debe tomar en cuenta algunos aspectos, una vez que se ha completado la instalación de los recursos básicos de hardware y software. Estos aspectos incluyen la configuración e instalación de un sistema de archivos universal, la configuración y administración de recursos mediante herramientas implementadas en software; el monitoreo de sus actividades y el registro de cada uno de los eventos generados por la ejecución de cálculos computacionales.
INTEGRANTES DEL EQUIPO
Alan Nataniel Gutiérrez Pineda
Alejandro Pérez Rosales
Marco Antonio Ramírez Cabrera
Ricardo Suazo Buenas
MEMORIA COMPARTIDA DISTRIBUIDA (MCD)
La memoria compartida distribuida (DSM) es una abstracción utilizada para compartir datos entre computadores que no comparten memoria física. Los procesos acceden a DSM para leer y actualizar, dentro de sus espacios de direcciones, sobre lo que aparenta ser la memoria interna normal asignada a un proceso. Sin embargo, existe un sistema subyacente en tiempo de ejecución que asegura de forma transparente que procesos diferentes ejecutándose en computadores diferentes observen las actualizaciones realizadas entre ellas. Es como si los procesos accedieran a una única me¬moria compartida, pero de hecho la memoria física está distribuida.
La principal característica de DSM es que ahorra al programador todo lo concerniente al paso de mensajes al escribir sus aplicaciones, cuestión que en otro sistema debería tenerse muy presente. DSM es fundamentalmente una herramienta para aplicaciones paralelas o para aplicaciones o gru¬pos de aplicaciones distribuidas en las que se puede acceder directamente a datos individuales que ellas comparten. En general, DSM es menos apropiado para sistemas cliente-servidor, ya que los clientes ven al servidor como un gestor de recursos en forma de datos abstractos que se acceden a través de peticiones (por razones de modularidad y protección). Sin embargo, los servidores pueden proporcionar DSM compartido entre los clientes. Por ejemplo, los archivos plasmados en memoria (memory mapped) que son compartidos y sobre los que se gestiona un cierto grado de consistencia son una forma de DSM.
4.1 Configuraciones Memoria Compartida Distribuida
COMPUTACIÓN PARALELA
Un computador paralelo es un conjunto de procesadores capaces de cooperar en la solución de un problema.
El problema se divide en partes. Cada parte se compone de un conjunto de instrucciones. Las instrucciones de cada parte se ejecutan simultáneamente en diferentes CPUs.
Técnicas computacionales que descomponen un problema en sus tareas y pistas que pueden ser computadas en diferentes máquinas o elementos de proceso al mismo tiempo.
Arquitecturas de MCD
Existen varias formas de implantar físicamente memoria compartida distribuida, a continuación se describen cada una de ellas.
Memoria basada en circuitos: Existe una única área de memoria y cada micro tiene su propio bus de datos y direcciones (en caso de no tenerlo se vuelve un esquema centralizado)
MCD basada en bus: En este esquema los micros comparten un bus de datos y direcciones por lo que es más barato de implementar, se necesita tener una memoria caché grande y sumamente rápida.
MCD basada en anillos: Es más tolerante a fallos, no hay coordinador central y se privilegia el uso de la memoria más cercana
MCD basada en conmutador: Varios micros se conectan entre sí en forma de bus formando un grupo, los grupos están interconectados entre sí a través de un conmutador.
4.2 Modelos de Consistencia.
La cuestión de la consistencia adquiere importancia en los sistemas DSM que replican el contenido de la memoria compartida mediante su almacenamiento en las cachés de computadores separados. Cada proceso tiene un gestor de réplicas local, el cual está encargado de mantener copias en caché para los objetos. En la mayor parte de las implementaciones, los datos se leen desde las réplicas locales por cuestiones de eficiencia, pero las actualizaciones deben propagarse al resto de gestores de réplica.
Consistencia Estricta
Cualquier lectura a una localidad de memoria x regresa el valor guardado por la operación de reescritura más reciente. La existencia de tiempo global es implícita para que el más reciente no sea ambiguo. Es el modelo de programación ideal, pero es casi imposible implantarla en un sistema distribuido. Los programadores suelen controlar bien los modelos más débiles. Es la más restrictiva, pero debido a que su implantación en un sistema DSM es en esencia imposible, nunca se utiliza
Consistencia Causal
El modelo de consistencia causal determina las actualizaciones que deben propagarse de acuerdo a una relación de causalidad entre los accesos a memoria. La consistencia secuencial requiere que todos los procesadores estén de acuerdo en el orden de los efectos observados. La consistencia causal requiere que todos los procesadores estén de acuerdo en el orden de aquellos efectos causalmente relacionados, pero permite que los eventos no relacionados, llamados concurrentes, sean vistos en órdenes diferentes.
Consistencia secuencial
La consistencia secuencial es una forma ligeramente más débil de la consistencia estricta. Satisface la siguiente condición:
El resultado de una ejecución es el mismo si las operaciones (lectura y escritura) de todos los procesos sobre el dato fueron ejecutadas en algún orden secuencial
a) Un dato almacenado secuencialmente consistente.
b) Un dato almacenado que no es secuencialmente consistente.
Consistencia débil
Los accesos a variables de sincronización asociadas con los datos almacenados son secuencialmente consistentes.
Propiedades
No se permite operación sobre una variable de sincronización hasta que todas las escrituras previas de hayan completado.
No se permiten operaciones de escritura o lectura sobre datos hasta que no se hayan completado operaciones previas sobre variables de sincronización.
Consistencia de Liberación
Requiere que el programador (compilador) utilice al principio y al final de cada sección critica la adquisición y la liberación respectivamente. La consistencia de liberación proporciona estos dos tipos:
Los accesos de adquisición indican a la memoria del sistema que está a punto de entrar a una región crítica.
Los accesos de liberación dice que acaba de salir de una región crítica. Estos accesos se implantan como operaciones ordinarias sobre variables o como operaciones especiales. La adquisición y liberación no tienen que aplicarse a toda la memoria, si no que protegen solo algunas variables compartidas específicas, en cuyo caso sólo éstas se mantienen consistentes.
Consistencia de Entrada
El modelo de consistencia de entrada requiere que cada variable compartida ordinaria se asocie con alguna variable de sincronización, como una cerradura o una barrera. Si se quiere utilizar de forma individual en paralelo a los elementos de un arreglo, entonces los diferentes elementos del arreglo deben asociarse con cerraduras diferentes. Cuando se realiza una adquisición sobre una variable de sincronización, sólo se pide la consistencia de las variables compartidas ordinarias protegidas por esa variable desincronización. Difiere de la consistencia de liberación con laxitud en el hecho de que la segunda no asócialas variables compartidas con cerraduras o barreras y en el momento de la adquisición debe terminar de manera empírica las variables que necesita
4.3 MCD En Base A Páginas
El esquema de MCD propone un espacio de direcciones de memoria virtual que integre la memoria de todas las computadoras del sistema, y su uso mediante paginación. Las páginas quedan restringidas a estar necesariamente en un único ordenador. Cuando un programa intenta acceder a una posición virtual de memoria, se comprueba si esa página se encuentra de forma local. Si no se encuentra, se provoca un fallo de página, y el sistema operativo solicita la página al resto de computadoras.
El sistema funciona de forma análoga al sistema de memoria virtual tradicional, pero en este caso los fallos de página se propagan al resto de ordenadores, hasta que la petición llega al ordenador que tiene la página virtual solicitada en su memoria local. A primera vista este sistema parece más eficiente que el acceso a la memoria virtual en disco, pero en la realidad ha mostrado ser un sistema demasiado lento en ciertas aplicaciones, ya que provoca un tráfico de páginas excesivo.
Una mejora dirigida a mejorar el rendimiento sugiere dividir el espacio de direcciones en una zona local y privada y una zona de memoria compartida, que se usará únicamente por procesos que necesiten compartir datos. Esta abstracción se acerca a la idea de programación mediante la declaración explícita de datos públicos y privados, y minimiza el envío de información, ya que sólo se enviarán los datos que realmente vayan a compartirse.
Diseño básico.
La idea DSM es sencilla: intentar emular la cache de un multiprocesador mediante MMU y el software de sistema operativo. En una DSM el espacio de direcciones se separa en pedazos los cuales están dispersos en todos los procesadores del sistema. Cuando un procesador hace referencia a una dirección que no es local, ocurre un señalamiento y el software DSMtrae el pedazo que contiene la dirección y reinicia la instrucción suspendida, que puede entonces concluir con éxito.
Replica.
Una mejora al sistema básico, que ayuda al desempeño en gran medida, consiste en duplicarlos pedazos exclusivos para la lectura. Otra posibilidad es duplicar los pedazos exclusivos lectura y uno para lectura y escritura. Sin embargo si un pedazo duplicado súbitamente se modifica, hay que realizar una acción especial para evitar la existencia de varias copias inconsistentes.
Granularidad.
La primera implementación de un sistema de MCD basado en páginas fue Ivy. Otras posibilidades son los sistemas basados en variables compartidas y los basados en objetos. En los sistemas basados en páginas la granularidad de la memoria se delinea al nivel de página de memoria. Esto quiere decir que la mínima unidad reverenciable por el sistema de MCD es la página, no pudiendo hacer distinción entre variables distintas almacenadas en la misma página. A pesar de que el uso de una granularidad a nivel de página puede introducir problemas como el false sharing, también permite mantener el overhead producido por la administración de la memoria distribuida dentro de parámetros razonables. Esto se debe a que es posible hacer uso de las características del hardware para el manejo de la memoria virtual, disponibles en la mayoría de los computadores.
Consistencia.
En Informática, en un sistema distribuido, tales como una memoria compartida distribuida o almacenes de datos distribuido, tales como una base de datos, sistema de archivos, caché web o sistemas de replicación optimista, hay una serie de posibles modelos de consistencia de datos. Se dice que un sistema soporta un determinado modelo, si las operaciones en memoria siguen normas específicas. La consistencia de los datos es definida entre el programador y el sistema, que garantiza que si el programador sigue las reglas, la memoria será consistente y el resultado de las operaciones de memoria será predecible.
Los lenguajes de alto nivel, tales como C, C++ y Java, respetan parcialmente este modelo traduciendo operaciones de memoria en operaciones de bajo nivel para preservar la memoria semántica. Para mantener el modelo, los compiladores pueden reordenar algunas instrucciones de memoria, y las llamadas a las bibliotecas como pthread_mutex_lock(), encapsular la sincronización necesaria.
Tipos de Consistencia:
• Consistencia secuencial
• Consistencia de causalidad
• Consistencia liberada
• Consistencia eventual
• Consistencia delta
• Consistencia PRAM (también conocido como consistencia FIFO)
• Consistencia débil
• Consistencia vector campo
Búsqueda del propietario
La forma de encontrar al propietario de la página, es sencilla concite en realizar una transmisión y solicitar la respuesta del propietario de la página especificada. El propietario asido localizado de esta manera, el protocolo puede continuar de manera anterior. La optimización obvia concite no solo en preguntar quién es el propietario, si no también indicar si el emisor desea leer o escribir y si necesita una copia de la página. El propietario puede enviar entonces un mensaje, transfiriendo la propiedad y la pagina según sea necesario. La trasmisión tiene la desventaja de interrumpir a cada procesador, obligándolo a inspeccionarle paquee de solicitud. La transmisión puede utilizar un ancho de banda considerable según el hardware.
Un problema con este protocolo es la carga potencial excesiva sobre el controlador de páginas, el cual maneja todas las solicitudes recibidas; este problema se resuelve con varios controladores de páginas en vez de uno. Una solución sencilla consiste en utilizar los bits de menor orden del numo de páginas con un índice en una tabla de controladores.
Búsqueda de copias
Es la forma de localizar todas las copias cuando estas se invaliden. Hay dos posibilidades, la primera consiste en trasmitir un mensaje con un número de páginas y solicitar a todos los procesadores que contengan la página que la invaliden. Solo funcionan si los mensajes retransmisión son por completo confiables. La segunda posibilidad consiste en que el propietario o el controlador de páginas mantengan una lista de conjunto de copias, indicándolos procesos que poseen tal o cual página
4.4 MCD en base a variables
En los MCD basados en variables busca evitar la compartición falsa ejecutando un programa en cada CPU que se comunica con una central, la que le provee de variables compartidas, administrando este cualquier tipo de variable, poniendo variables grandes en varias páginas o en la misma página muchas variables del mismo tipo, en este protocolo es muy importante declarar las variables compartidas.
La compartición falsa se produce cuando dos procesos se pelean el acceso a la misma página de memoria, ya que contiene variables que requieren los dos, pero estas no son las mismas. Esto pasa por un mal diseño del tamaño de las páginas y por la poca relación existente entre variables de la misma página.
En este esquema la granularidad es más fina ya que sólo se comparten variables que han sido marcados previamente en el código del programa.
Tanto el compilador como el entorno de ejecución se encargan del acceso y compartición de las variables compartidas.
Clases de variables:
• Variables ordinarias.
• Variables de datos compartidos.
• Variables de sincronización.
Categorías de variables:
• Exclusiva para lectura.
• Migratoria.
• De escritura compartida.
• Convencional.
4.5 MCD en base a objetos
En los MCD basados en objetos se busca el acceso a datos por medio de la encapsulación de la información y repartida a través de la red, estos objetos serán definidos por el Programador y las CPU´s cambiaran los estados según procedan con los accesos. Nace como respuesta a la creciente popularización de los lenguajes orientados por objetos. Los datos se organizan y son transportados en unidades de objetos, no unidades de páginas
Ventajas:
• Es más modular que otras técnicas.
• La implementación es más flexible por que los accesos son controlados. Sincronización y accesos se pueden integrar juntos, más fácilmente
Desventajas:
• No corre en viejos programas para multiprocesadores.
• Los accesos se deben hacer invocando a los accesos, lo que significa más trabajo que los métodos de páginas compartidas.
4.6 Administradores de memorias en clusters
Un cluster debe comportarse como una sola máquina. Ambientes de gestión de recursos (PBS, SGE) y otro tipo de enfoques como Mosix, cumplen con este propósito desde el punto de vista de utilización.
Las herramientas de instalación también facilitan la construcción del cluster. Sin embargo, la administración aún se realiza nodo a nodo.
El administrador de un cluster debe tomar en cuenta algunos aspectos, una vez que se ha completado la instalación de los recursos básicos de hardware y software. Estos aspectos incluyen la configuración e instalación de un sistema de archivos universal, la configuración y administración de recursos mediante herramientas implementadas en software; el monitoreo de sus actividades y el registro de cada uno de los eventos generados por la ejecución de cálculos computacionales.
INTEGRANTES DEL EQUIPO
Alan Nataniel Gutiérrez Pineda
Alejandro Pérez Rosales
Marco Antonio Ramírez Cabrera
Ricardo Suazo Buenas
Nataniel_7- Mensajes : 8
Fecha de inscripción : 05/09/2013
retroalimentacion
Mi replica esta dirigida al equipo de BOLÍVAR PÉREZ MENDOZA, ABEL PIOQUINTO UBIAS, EULISES ECHEVERRIA RODRIGUEZ y SERGIO ZAIR HERNÁNDEZ GÓMEZ creo que su participacion esta muy bien sigan asi.
ATT: Enrique Goicochea Pineda
ATT: Enrique Goicochea Pineda
soldieri- Invitado
Retroalimentación
Bueno solo quiero hacer una pequeña observación sobre a que a algunos equipos les falto colocar conceptos de algunos puntos de los temas, pero la información que si mostraron me parece correcta. Espero que para la próxima si encuentren todos los conceptos.
ATT: Alan Nataniel Gutiérrez Pineda
ATT: Alan Nataniel Gutiérrez Pineda
Nataniel_7- Mensajes : 8
Fecha de inscripción : 05/09/2013
participacion
MEMORIA COMPARTIDA DISTRIBUIDA
La memoria compartida distribuida (MCD), es reconocida como uno de los enfoques más llamativos para la creación de sistemas escalables, de alto rendimiento de sistemas multiprocesador. Los sistemas de memoria compartida distribuida, realizan una semántica de memoria compartida sobre hardware de intercambio de mensajes, ya que representan la creación hibrida de dos tipos de computación paralelos: la memoria distribuida en sistemas multiprocesador y los sistemas distribuidos. Estos proporcionan la abstracción de memoria compartida en sistemas con memorias distribuidas físicamente y combinan las mejores características de ambos enfoques. Este sistema de memoria compartida posee su propia memoria local y se interconecta con otros procesadores por medio de un dispositivo de alta velocidad.
CONFIGURACIONES DE MEMORIA COMPARTIDA DISTRIBUIDA (DE
CIRCUITOS, BASADA EN BUS, ANILLO O CON CONMUTADOR), MODELOS DE CONSISTENCIA (ESTRICTA, CAUSAL, SECUENCIAL, DÉBIL, DE LIBERACIÓN, Y DE ENTRADA).
Consistencia Estricta
El modelo de consistencia más restrictivo es llamado consistencia estricta y es definido por la siguiente condición Cualquier lectura sobre un item de dato x retorna un valor correspondiente con la más reciente escritura sobre x
a) Un almacenamiento estrictamente consistente.
b) Un almacenamiento que no es estrictamente consistente.
Consistencia Causal
El modelo de consistencia causal (Hutto and Ahamad, 1990) es un debilitamiento de la consistencia secuencial. Se hace una diferenciación entre eventos que están potencialmente relacionados en forma causal y aquellos que no. Las operaciones que no están causalmente relacionadas se dicen concurrentes.
La condición a cumplir para que unos datos sean causalmente consistentes es:
Escrituras que están potencialmente relacionadas en forma causal deben ser vistas por todos los procesos en el mismo orden. Escrituras concurrentes pueden ser vistas en un orden diferente sobre diferentes máquinas.
Esta secuencia es permitida con un almacenamiento causalmente consistente, pero no con un almacenamiento secuencialmente consistente o con un almacenamiento consistente en forma estricta.
Consistencia secuencial
La consistencia secuencial es una forma ligeramente más débil de la consistencia estricta. Satisface la siguiente condición:
El resultado de una ejecución es el mismo si las operaciones (lectura y escritura) de todos los procesos sobre el dato fueron ejecutadas en algún orden secuencial y las operaciones de cada proceso individual aparecen en esta operaciones de cada proceso individual aparecen en esta secuencia en el orden especificado por su programa
a) Un dato almacenado secuencialmente consistente.
b) Un dato almacenado que no es secuencialmente consistente.
Consistencia Débil
Los accesos a variables de sincronización asociadas con los datos almacenados son secuencialmente consistentes.
Propiedades
No se permite operación sobre una variable de sincronización hasta que todas las escrituras previas de hayan completado. No se permiten operaciones de escritura o lectura sobre ítems de datos hasta que no se hayan completado operaciones previas sobre variables de sincronización.
Consistencia liberación (Reléase)
El modelo de consistencia reléase, RC [27], se basa en el supuesto de que los accesos a variables compartidas se protegen en secciones críticas empleando primitivas de sincronización, como por ejemplo locks. En tal caso, todo acceso esta precedido por una operación adquiere y seguido por una operación reléase. Es responsabilidad del programador que esta propiedad se cumpla en todos los programas.
Puesto que ningún otro proceso, ni local ni remoto, puede acceder a las variables que han sido modificadas mientras se encuentren protegidas en la sección critica, la actualización de cualquier modificación puede postergarse hasta el momento en que se lleva a cabo la operación reléase.
La operación reléase no se da por completada hasta que la actualización haya sido propagada a todos aquellos procesadores en donde haya replicas. Con RC, la propagación de un conjunto de modificaciones a memoria compartida se lleva a cabo con un costo fijo.
Propagación de Actualizaciones bajo RC y LRC de código sin proteger. En consecuencia obtuvo un valor inconsistente para la variable leída.
MEMORIA COMPARTIDA DISTRIBUIDA EN BASE A PÁGINAS (DISEÑO, RÉPLICA, GRANULADA, CONSISTENCIA, PROPIETARIO, Y COPIAS)
Diseño
De la descripción del sistema DSM-PEPE, es evidente que la especificación de los protocolos que implementan los distintos modelos de consistencia de memoria se encuentra dispersa entre los componentes del sistema. Esto está relacionado con el hecho que los protocolos implementados desencadenan sus acciones de consistencia bajo distintas condiciones. En el caso del protocolo de consistencia secuencial, las acciones de consistencia se desencadenan a partir de faltas de página detectadas por el sistema operativo, y en el caso del protocolo de consistencia de entrada, por acciones de sincronización explícitas dentro del código del usuario.
El hecho que la especificación se encuentre dispersa dificulta tanto la incorporación de nuevos protocolos de consistencia como la modificación de los ya existentes, debido a que los componentes tienen además de su funcionalidad básica responsabilidades que no les corresponden. Por ejemplo, los objetos DSMPage y DSMLock se encargan de ejecutar acciones de consistencia, a pesar que no es función de ellos manejar este tipo de acciones.
Específicamente la clase DSMPage debería encargarse de realizar actualizaciones de las páginas y mantener el estado de ellas; la clase DSMLock debería manejar únicamente acciones de sincronización como el envío y recepción del token de exclusión mutua. Sería deseable con el propósito de tener un mejor diseño que estas clases no incluyeran acciones ligadas a los protocolos de consistencia como ocurre en este momento.
Para mejorar el diseño de este sistema es necesario extraer y luego encapsular la especificación de los protocolos de consistencia de manera que sea el aspecto quien tome las acciones de consistencia necesaria. Más aún, a partir del hecho que los protocolos de consistencia dependiendo de su tipo toman acciones de consistencia en diferentes componentes se propone que cada modelo de consistencia de memoria en DSM-PEPE sea considerado como un aspecto.
A partir del análisis de los protocolos de consistencia de DSM-PEPE ya explicados ejemplificaremos nuestra propuesta, detallando las modificaciones que se deben realizar para conseguir un mejor diseño.
Replica
1. Replicar los bloques de sólo lectura
2. Replicar todos los bloques: en este caso se tienen que tomar acciones para mantener la consistencia de los datos.
Granularidad
Los distintos tipos de grafo se diferencian por la granularidad de sus nodos y la información contenida en las aristas. En todos los casos, los nodos del grafo contienen un apuntador a una operación de la representación en WHIRL. A su vez, las operaciones de la representación intermedia también tienen asociado un apuntador que les va a permitir acceder al nodo correspondiente del grafo de dependencias. En el grafo de dependencias entre arrays, los nodos apuntan a operaciones de load y store sobre arrays, mientras que en el grafo de niveles de dependencia, los nodos apuntan a sentencias, que son elementos de mayor granularidad.
Respecto a las aristas, estas van a contener vectores de dependencia en el grafo de dependencias entre arrays o una etiqueta indicando el nivel de la dependencia en el caso del grafo de niveles de dependencia.
La figura muestra de forma esquemática como se guardan los grafos. La estructura de datos que se utiliza es la clase ARRAY DIRECTED GRAPH16, que se declara en /be/com/dep graph.h. El tipo de dato que se utiliza para declarar las aristas es una unión de tres tipos distintos, que son DEPV ARRAY para el grafo de dependencias entre arrays, LEVEL STRUCT para el de niveles de dependencia y DEP STRUCT para el utilizado en generación de código.
La clase DEPV ARRAY contiene una lista de vectores de dependencia, cada uno de ellos de tipo DEPV. Cada dimensión de un vector de dependencia guarda un elemento de tipo DEP, que es un entero de dieciséis bits organizado de la siguiente forma:
Bit 15: indica si la distancia es constante.
Bits 12-14: señalan la dirección de la dependencia.
Bits 0-11: indica la distancia, en caso que esta sea constante, o un límite en caso contrario.
Consistencia
*Un modelo de consistencia de memoria (Mosberger 1993) especifica las garantías de consistencia que un sistema otorga sobre los valores que los procesos leen de los objetos, dado que en realidad acceden a una réplica de cada objeto y que múltiples procesos pueden actualizar los objetos.
*La principal interrogante que se plantea al caracterizar un modelo de consistencia de memoria es: cuándo se realiza un acceso de lectura sobre una posición de memoria, qué accesos de escritura son candidatos para que sus valores sean proporcionados en la lectura.
*Cualquier lectura realizada antes.
*La ultimo lectura.
*Etc.
Propietario
El modelo de consistencia secuencial dice que todos los nodos deben ver las escrituras sobre una variable en el mismo orden. El protocolo secuencial implementado en DSM-PEPE funciona sobre la base de que en todo momento un nodo es el propietario (owner) de una página y es sólo él quien puede escribir en ella. En caso que alguien más desee escribir en ella, primero debe encontrar al propietario y solicitarle la página, en cuyo caso el nodo receptor pasa a ser el nuevo propietario. La información de los propietarios de cada página se mantiene como un atributo del objeto DSMPage, llamado probOwner, el cual indica quién es su probable propietario.
Las acciones de consistencia se generan en cuatro tipos de eventos, que corresponden a métodos del objeto.
DSMPage: faltas de páginas locales para lectura (ReadFault), faltas de página locales para escritura (WriteFault), faltas de página remotas para lectura (RemoteReadFault), y faltas de página remotas para escritura (RemoteWriteFault). En cada uno de esos casos se toman las acciones necesarias para invalidar páginas, enviar copias actualizadas a quien las pide, y actualizar los propietarios. La figura 1 muestra una descripción parcial de los objetos involucrados con el protocolo de consistencia secuencial.
En el caso de la falta de lectura local, se envía una petición al probable propietario de la página utilizando el atributo probOwner; eventualmente el mensaje llegará al propietario actual, y éste enviará un mensaje con la copia actualizada de la página. En el caso de la falta de escritura local, se realiza el mismo procedimiento para hallar al propietario actual de la página, pero éste junto con enviar la copia actualizada, además invalida su copia local y todas las copias que ha distribuido entre los demás nodos mientras fue propietario, y entrega la propiedad de la página al nodo receptor. Las faltas remotas se utilizan para ubicar al propietario de la página. Cuando llega una falta remota, el nodo evalúa si él es el propietario de la página; si es así, contesta con la acción de copia o invalidación correspondiente, y si no es así, reenvía la petición a quien él cree que es el probable propietario utilizando su atributo probOwner. La recepción de faltas remotas se hace a través de un objeto receptor de mensajes llamado msgMgrThread, el cual transmite el evento de falta de página al objeto DSMPage correspondiente.
Copias
En el caso del protocolo de consistencia secuencial, se propone extraer de la especificación del objeto DSMPage la información relativa al probable propietario de la página y de los nodos que poseen copias de ella, ya que ésta es únicamente utilizada por el protocolo de consistencia secuencial, y extraer del msgMgrThread la funcionalidad relativa al protocolo de consistencia. Esto significa eliminar de la especificación del objeto DSMPage el atributo probOwner, y también los métodos que manejan la consistencia actualmente, ReadFault, WriteFault, RemoteReadFault, y RemoteWriteFault.
El sistema operativo y el objeto msgMgrThread generan los puntos de entrada a las acciones de consistencia. La detección de una falta de página por el sistema operativo o la recepción de un mensaje por el msgMgrThread corresponden a los puntos de unión del aspecto encargado del protocolo de consistencia secuencial con el resto del sistema. El aspecto recibirá el nombre de sequentialAspect. La figura muestra las modificaciones propuestas y los puntos de unión para el aspecto sequentialAspect.
El aspecto sequentialAspect será el encargado de invalidar las páginas y enviar las copias actualizadas cuando reciba un mensaje de falta de página remota y el nodo sea el propietario de la página, o bien de redirigir mensajes de consistencia hacia los probables propietarios de las páginas cuando no lo sea y reciba este mismo mensaje. Además, tendrá que generar mensajes solicitando la página que se requiera cuando se produzca una falta de página local.
Con esto el diseño del objeto DSMPage se hace más cohesionado, ya que ahora contiene sólo la funcionalidad referente a la representación de una página de memoria y el msgMgrThread se encarga sólo de la recepción de mensajes entre los nodos y transmisión de estos mensajes hacia los objetos.
MEMORIA COMPARTIDA DISTRIBUIDA BASADA EN VARIABLES
La DSM basada en paginas toma un espacio de direcciones y permite que las paginas emigren de manera dinámica sobre la red, los procesos tienen acceso a toda la memoria mediante las instrucciones normales de lectura y escritura y no son consientes de las fallas de página en la red. Un método más estructurado consiste en compartir solo ciertas variables estructuradas de datos necesarias para más de un proceso, el problema pasa de realizar la paginación sobre la red a la forma de mantener una base de datos distribuida, en forma duplicada consiste en las variables compartidas, pueden aplicarse varias técnicas que estas conducen con frecuencia a mejoras esenciales al proceso. El uso de variables compartidas controladas de manera individual proporciona una oportunidad para no compartir fácilmente, ejemplos Munin y Midway.
MUNIN
Munin es un sistema DSM que se basa en objetos del software pero que puede colocar un objeto en una página aparte, de modo que el hardware MMU pueda utilizarse para detectar el acceso a los objetos compartidos. El modelo básico de Munin es el de varios procesadores cada uno con espacio de direcciones lineales por pagina, en el que uno o más hilos ejecutan un programa multiprocesador con ligeras modificaciones, el objetivo es tomar los programas multiprocesadores existentes y realizar cambios menores y hacerlos que se ejecuten de manera eficiente en los sistemas con multicomputadoras que utilicen una forma de DSM. Las modificaciones consisten en anotar las declaraciones de variables compartidas con la palabra reservada shred de modo que el compilador las reconozca, puede proporcionar información para permitir el reconocimiento y optimización de ciertos casos especiales.
MEMORIA COMPARTIDA DISTRIBUIDA EN BASE A OBJETOS
Puesto que en muchos lenguajes de programación los datos se encuentran organizados como objetos y no como variables simples, los sistemas de MCD basados en objetos intentan transportar datos por la red utilizando como unidad de manipulación el objeto y no las páginas o las variables.
Los procesos que se ejecutan en los distintos computadores que componen el sistema tienen acceso a un espacio de objetos compartidos, en lugar de a un espacio lineal de direcciones. El sistema es responsable de la ubicación y administración de es- tos objetos compartidos. Un proceso puede invocar métodos de un objeto compartido, independientemente de la ubicación del proceso y del objeto. Los objetos están protegidos por el ocultamiento de información, por lo que los procesos no pueden acceder directamente al estado interno de ningún objeto compartido. Esto facilita algunas optimizaciones dentro del sistema. Por ejemplo, puede relajarse el modelo de consistencia sin que el programador tenga conocimiento alguno. Al igual que en el caso de la granularidad a nivel de variables compartidas, cuando se utiliza el objeto como unidad para compartir es posible eliminar el false sharing.
Además, también en este caso es factible utilizar un protocolo de actualización en vez de uno de invalidación. Sin embargo, quizás la mayor ventaja de este modelo es su modularidad y flexibilidad, a la vez que permite una integración limpia con la sincronización.
La principal desventaja es el aumento en el overhead que se produce por la manipulación aun más indirecta de la memoria. En realidad, este es un problema inherente al uso de objetos.
Un ejemplo de un sistema de MCD basado en objetos es Linda [11], un sistema basado en una memoria compartida altamente estructurada y que es accedida a través de un pequeño conjunto de primitivas que se agregan a lenguajes tradicionales como C y Fortran. El espacio de objetos se llama tuple space, o espacio de tuplas. Los procesos pueden insertar y remover tuplas al espacio, desde cualquier computador.
ADMINISTRADORES DE MEMORIAS EN CLÚSTERS
La operación de clusters requiere de un manejo adecuado de los recursos asociados. Los recursos del cluster deben ser administrados adecuadamente para que el administrador invierta la menor cantidad de tiempo en detectar, investigar y recuperar fallos de hardware y software, y de este modo definir posibles medidas de contingencia y tratar que el sistema esté libre de errores. A su vez, estos pasos permiten la adaptabilidad a los requerimientos y cambios constantes que se presentan en la manipulación de tecnologías cluster, en cuanto se refiere al
hardware, software y al uso de ciertos patrones de diseño.
El administrador de un cluster debe tomar en cuenta algunos aspectos, una vez que se ha completado la instalación de los recursos básicos de hardware y software. Estos aspectos incluyen la configuración e instalación de un sistema de archivos universal, la configuración y administración de recursos mediante herramientas implementadas en software; el monitoreo de sus actividades y el registro de cada uno de los eventos generados por la ejecución de cálculos computacionales.
Varios de los sistemas más importantes para la instalación automática de clusters, incluyen herramientas de monitoreo, administración y registro de eventos mediante paquetes de distribución para sistemas Windows y Linux. Entre estos sistemas están OSCAR y Rocks NPACI; ambos sistemas permiten el uso de herramientas de software que tienen propósitos específicos tales como:
• Definición y administración de nodos.
• Administración de colas por lotes (Batch Queue Management).
• Administración de recursos: grupos NIS (Network Information Service), cuotas de disco y CPU.
• Administración de servicios de resolución de nombres: DNS (Domain Name System para clusters)...
• Registro de usuarios para clusters de dimensiones superiores a los 100 nodos.
• Monitoreo de carga.
La administración de clusters, implica tomar medidas preventivas y planificar tareas. La administración implica los siguientes aspectos:
• Registro de eventos.
• Monitoreo o medida del estado de los recursos del cluster.
• Recuperación ante fallos de hardware, software, incluyendo el sistema de archivos.
• Administración del registro de usuarios y grupos de usuarios, de los servicios del cluster (accounting).
• Planificación de tareas y balanceo de carga.
INTEGRANTES DEL EQUIPO:
ANDRES ALBERTO ALONSO OLIVARES
HUMBERTINA BLANCAS ANGON
BRENDA OLMOS OLIVEROS
La memoria compartida distribuida (MCD), es reconocida como uno de los enfoques más llamativos para la creación de sistemas escalables, de alto rendimiento de sistemas multiprocesador. Los sistemas de memoria compartida distribuida, realizan una semántica de memoria compartida sobre hardware de intercambio de mensajes, ya que representan la creación hibrida de dos tipos de computación paralelos: la memoria distribuida en sistemas multiprocesador y los sistemas distribuidos. Estos proporcionan la abstracción de memoria compartida en sistemas con memorias distribuidas físicamente y combinan las mejores características de ambos enfoques. Este sistema de memoria compartida posee su propia memoria local y se interconecta con otros procesadores por medio de un dispositivo de alta velocidad.
CONFIGURACIONES DE MEMORIA COMPARTIDA DISTRIBUIDA (DE
CIRCUITOS, BASADA EN BUS, ANILLO O CON CONMUTADOR), MODELOS DE CONSISTENCIA (ESTRICTA, CAUSAL, SECUENCIAL, DÉBIL, DE LIBERACIÓN, Y DE ENTRADA).
Consistencia Estricta
El modelo de consistencia más restrictivo es llamado consistencia estricta y es definido por la siguiente condición Cualquier lectura sobre un item de dato x retorna un valor correspondiente con la más reciente escritura sobre x
a) Un almacenamiento estrictamente consistente.
b) Un almacenamiento que no es estrictamente consistente.
Consistencia Causal
El modelo de consistencia causal (Hutto and Ahamad, 1990) es un debilitamiento de la consistencia secuencial. Se hace una diferenciación entre eventos que están potencialmente relacionados en forma causal y aquellos que no. Las operaciones que no están causalmente relacionadas se dicen concurrentes.
La condición a cumplir para que unos datos sean causalmente consistentes es:
Escrituras que están potencialmente relacionadas en forma causal deben ser vistas por todos los procesos en el mismo orden. Escrituras concurrentes pueden ser vistas en un orden diferente sobre diferentes máquinas.
Esta secuencia es permitida con un almacenamiento causalmente consistente, pero no con un almacenamiento secuencialmente consistente o con un almacenamiento consistente en forma estricta.
Consistencia secuencial
La consistencia secuencial es una forma ligeramente más débil de la consistencia estricta. Satisface la siguiente condición:
El resultado de una ejecución es el mismo si las operaciones (lectura y escritura) de todos los procesos sobre el dato fueron ejecutadas en algún orden secuencial y las operaciones de cada proceso individual aparecen en esta operaciones de cada proceso individual aparecen en esta secuencia en el orden especificado por su programa
a) Un dato almacenado secuencialmente consistente.
b) Un dato almacenado que no es secuencialmente consistente.
Consistencia Débil
Los accesos a variables de sincronización asociadas con los datos almacenados son secuencialmente consistentes.
Propiedades
No se permite operación sobre una variable de sincronización hasta que todas las escrituras previas de hayan completado. No se permiten operaciones de escritura o lectura sobre ítems de datos hasta que no se hayan completado operaciones previas sobre variables de sincronización.
Consistencia liberación (Reléase)
El modelo de consistencia reléase, RC [27], se basa en el supuesto de que los accesos a variables compartidas se protegen en secciones críticas empleando primitivas de sincronización, como por ejemplo locks. En tal caso, todo acceso esta precedido por una operación adquiere y seguido por una operación reléase. Es responsabilidad del programador que esta propiedad se cumpla en todos los programas.
Puesto que ningún otro proceso, ni local ni remoto, puede acceder a las variables que han sido modificadas mientras se encuentren protegidas en la sección critica, la actualización de cualquier modificación puede postergarse hasta el momento en que se lleva a cabo la operación reléase.
La operación reléase no se da por completada hasta que la actualización haya sido propagada a todos aquellos procesadores en donde haya replicas. Con RC, la propagación de un conjunto de modificaciones a memoria compartida se lleva a cabo con un costo fijo.
Propagación de Actualizaciones bajo RC y LRC de código sin proteger. En consecuencia obtuvo un valor inconsistente para la variable leída.
MEMORIA COMPARTIDA DISTRIBUIDA EN BASE A PÁGINAS (DISEÑO, RÉPLICA, GRANULADA, CONSISTENCIA, PROPIETARIO, Y COPIAS)
Diseño
De la descripción del sistema DSM-PEPE, es evidente que la especificación de los protocolos que implementan los distintos modelos de consistencia de memoria se encuentra dispersa entre los componentes del sistema. Esto está relacionado con el hecho que los protocolos implementados desencadenan sus acciones de consistencia bajo distintas condiciones. En el caso del protocolo de consistencia secuencial, las acciones de consistencia se desencadenan a partir de faltas de página detectadas por el sistema operativo, y en el caso del protocolo de consistencia de entrada, por acciones de sincronización explícitas dentro del código del usuario.
El hecho que la especificación se encuentre dispersa dificulta tanto la incorporación de nuevos protocolos de consistencia como la modificación de los ya existentes, debido a que los componentes tienen además de su funcionalidad básica responsabilidades que no les corresponden. Por ejemplo, los objetos DSMPage y DSMLock se encargan de ejecutar acciones de consistencia, a pesar que no es función de ellos manejar este tipo de acciones.
Específicamente la clase DSMPage debería encargarse de realizar actualizaciones de las páginas y mantener el estado de ellas; la clase DSMLock debería manejar únicamente acciones de sincronización como el envío y recepción del token de exclusión mutua. Sería deseable con el propósito de tener un mejor diseño que estas clases no incluyeran acciones ligadas a los protocolos de consistencia como ocurre en este momento.
Para mejorar el diseño de este sistema es necesario extraer y luego encapsular la especificación de los protocolos de consistencia de manera que sea el aspecto quien tome las acciones de consistencia necesaria. Más aún, a partir del hecho que los protocolos de consistencia dependiendo de su tipo toman acciones de consistencia en diferentes componentes se propone que cada modelo de consistencia de memoria en DSM-PEPE sea considerado como un aspecto.
A partir del análisis de los protocolos de consistencia de DSM-PEPE ya explicados ejemplificaremos nuestra propuesta, detallando las modificaciones que se deben realizar para conseguir un mejor diseño.
Replica
1. Replicar los bloques de sólo lectura
2. Replicar todos los bloques: en este caso se tienen que tomar acciones para mantener la consistencia de los datos.
Granularidad
Los distintos tipos de grafo se diferencian por la granularidad de sus nodos y la información contenida en las aristas. En todos los casos, los nodos del grafo contienen un apuntador a una operación de la representación en WHIRL. A su vez, las operaciones de la representación intermedia también tienen asociado un apuntador que les va a permitir acceder al nodo correspondiente del grafo de dependencias. En el grafo de dependencias entre arrays, los nodos apuntan a operaciones de load y store sobre arrays, mientras que en el grafo de niveles de dependencia, los nodos apuntan a sentencias, que son elementos de mayor granularidad.
Respecto a las aristas, estas van a contener vectores de dependencia en el grafo de dependencias entre arrays o una etiqueta indicando el nivel de la dependencia en el caso del grafo de niveles de dependencia.
La figura muestra de forma esquemática como se guardan los grafos. La estructura de datos que se utiliza es la clase ARRAY DIRECTED GRAPH16, que se declara en /be/com/dep graph.h. El tipo de dato que se utiliza para declarar las aristas es una unión de tres tipos distintos, que son DEPV ARRAY para el grafo de dependencias entre arrays, LEVEL STRUCT para el de niveles de dependencia y DEP STRUCT para el utilizado en generación de código.
La clase DEPV ARRAY contiene una lista de vectores de dependencia, cada uno de ellos de tipo DEPV. Cada dimensión de un vector de dependencia guarda un elemento de tipo DEP, que es un entero de dieciséis bits organizado de la siguiente forma:
Bit 15: indica si la distancia es constante.
Bits 12-14: señalan la dirección de la dependencia.
Bits 0-11: indica la distancia, en caso que esta sea constante, o un límite en caso contrario.
Consistencia
*Un modelo de consistencia de memoria (Mosberger 1993) especifica las garantías de consistencia que un sistema otorga sobre los valores que los procesos leen de los objetos, dado que en realidad acceden a una réplica de cada objeto y que múltiples procesos pueden actualizar los objetos.
*La principal interrogante que se plantea al caracterizar un modelo de consistencia de memoria es: cuándo se realiza un acceso de lectura sobre una posición de memoria, qué accesos de escritura son candidatos para que sus valores sean proporcionados en la lectura.
*Cualquier lectura realizada antes.
*La ultimo lectura.
*Etc.
Propietario
El modelo de consistencia secuencial dice que todos los nodos deben ver las escrituras sobre una variable en el mismo orden. El protocolo secuencial implementado en DSM-PEPE funciona sobre la base de que en todo momento un nodo es el propietario (owner) de una página y es sólo él quien puede escribir en ella. En caso que alguien más desee escribir en ella, primero debe encontrar al propietario y solicitarle la página, en cuyo caso el nodo receptor pasa a ser el nuevo propietario. La información de los propietarios de cada página se mantiene como un atributo del objeto DSMPage, llamado probOwner, el cual indica quién es su probable propietario.
Las acciones de consistencia se generan en cuatro tipos de eventos, que corresponden a métodos del objeto.
DSMPage: faltas de páginas locales para lectura (ReadFault), faltas de página locales para escritura (WriteFault), faltas de página remotas para lectura (RemoteReadFault), y faltas de página remotas para escritura (RemoteWriteFault). En cada uno de esos casos se toman las acciones necesarias para invalidar páginas, enviar copias actualizadas a quien las pide, y actualizar los propietarios. La figura 1 muestra una descripción parcial de los objetos involucrados con el protocolo de consistencia secuencial.
En el caso de la falta de lectura local, se envía una petición al probable propietario de la página utilizando el atributo probOwner; eventualmente el mensaje llegará al propietario actual, y éste enviará un mensaje con la copia actualizada de la página. En el caso de la falta de escritura local, se realiza el mismo procedimiento para hallar al propietario actual de la página, pero éste junto con enviar la copia actualizada, además invalida su copia local y todas las copias que ha distribuido entre los demás nodos mientras fue propietario, y entrega la propiedad de la página al nodo receptor. Las faltas remotas se utilizan para ubicar al propietario de la página. Cuando llega una falta remota, el nodo evalúa si él es el propietario de la página; si es así, contesta con la acción de copia o invalidación correspondiente, y si no es así, reenvía la petición a quien él cree que es el probable propietario utilizando su atributo probOwner. La recepción de faltas remotas se hace a través de un objeto receptor de mensajes llamado msgMgrThread, el cual transmite el evento de falta de página al objeto DSMPage correspondiente.
Copias
En el caso del protocolo de consistencia secuencial, se propone extraer de la especificación del objeto DSMPage la información relativa al probable propietario de la página y de los nodos que poseen copias de ella, ya que ésta es únicamente utilizada por el protocolo de consistencia secuencial, y extraer del msgMgrThread la funcionalidad relativa al protocolo de consistencia. Esto significa eliminar de la especificación del objeto DSMPage el atributo probOwner, y también los métodos que manejan la consistencia actualmente, ReadFault, WriteFault, RemoteReadFault, y RemoteWriteFault.
El sistema operativo y el objeto msgMgrThread generan los puntos de entrada a las acciones de consistencia. La detección de una falta de página por el sistema operativo o la recepción de un mensaje por el msgMgrThread corresponden a los puntos de unión del aspecto encargado del protocolo de consistencia secuencial con el resto del sistema. El aspecto recibirá el nombre de sequentialAspect. La figura muestra las modificaciones propuestas y los puntos de unión para el aspecto sequentialAspect.
El aspecto sequentialAspect será el encargado de invalidar las páginas y enviar las copias actualizadas cuando reciba un mensaje de falta de página remota y el nodo sea el propietario de la página, o bien de redirigir mensajes de consistencia hacia los probables propietarios de las páginas cuando no lo sea y reciba este mismo mensaje. Además, tendrá que generar mensajes solicitando la página que se requiera cuando se produzca una falta de página local.
Con esto el diseño del objeto DSMPage se hace más cohesionado, ya que ahora contiene sólo la funcionalidad referente a la representación de una página de memoria y el msgMgrThread se encarga sólo de la recepción de mensajes entre los nodos y transmisión de estos mensajes hacia los objetos.
MEMORIA COMPARTIDA DISTRIBUIDA BASADA EN VARIABLES
La DSM basada en paginas toma un espacio de direcciones y permite que las paginas emigren de manera dinámica sobre la red, los procesos tienen acceso a toda la memoria mediante las instrucciones normales de lectura y escritura y no son consientes de las fallas de página en la red. Un método más estructurado consiste en compartir solo ciertas variables estructuradas de datos necesarias para más de un proceso, el problema pasa de realizar la paginación sobre la red a la forma de mantener una base de datos distribuida, en forma duplicada consiste en las variables compartidas, pueden aplicarse varias técnicas que estas conducen con frecuencia a mejoras esenciales al proceso. El uso de variables compartidas controladas de manera individual proporciona una oportunidad para no compartir fácilmente, ejemplos Munin y Midway.
MUNIN
Munin es un sistema DSM que se basa en objetos del software pero que puede colocar un objeto en una página aparte, de modo que el hardware MMU pueda utilizarse para detectar el acceso a los objetos compartidos. El modelo básico de Munin es el de varios procesadores cada uno con espacio de direcciones lineales por pagina, en el que uno o más hilos ejecutan un programa multiprocesador con ligeras modificaciones, el objetivo es tomar los programas multiprocesadores existentes y realizar cambios menores y hacerlos que se ejecuten de manera eficiente en los sistemas con multicomputadoras que utilicen una forma de DSM. Las modificaciones consisten en anotar las declaraciones de variables compartidas con la palabra reservada shred de modo que el compilador las reconozca, puede proporcionar información para permitir el reconocimiento y optimización de ciertos casos especiales.
MEMORIA COMPARTIDA DISTRIBUIDA EN BASE A OBJETOS
Puesto que en muchos lenguajes de programación los datos se encuentran organizados como objetos y no como variables simples, los sistemas de MCD basados en objetos intentan transportar datos por la red utilizando como unidad de manipulación el objeto y no las páginas o las variables.
Los procesos que se ejecutan en los distintos computadores que componen el sistema tienen acceso a un espacio de objetos compartidos, en lugar de a un espacio lineal de direcciones. El sistema es responsable de la ubicación y administración de es- tos objetos compartidos. Un proceso puede invocar métodos de un objeto compartido, independientemente de la ubicación del proceso y del objeto. Los objetos están protegidos por el ocultamiento de información, por lo que los procesos no pueden acceder directamente al estado interno de ningún objeto compartido. Esto facilita algunas optimizaciones dentro del sistema. Por ejemplo, puede relajarse el modelo de consistencia sin que el programador tenga conocimiento alguno. Al igual que en el caso de la granularidad a nivel de variables compartidas, cuando se utiliza el objeto como unidad para compartir es posible eliminar el false sharing.
Además, también en este caso es factible utilizar un protocolo de actualización en vez de uno de invalidación. Sin embargo, quizás la mayor ventaja de este modelo es su modularidad y flexibilidad, a la vez que permite una integración limpia con la sincronización.
La principal desventaja es el aumento en el overhead que se produce por la manipulación aun más indirecta de la memoria. En realidad, este es un problema inherente al uso de objetos.
Un ejemplo de un sistema de MCD basado en objetos es Linda [11], un sistema basado en una memoria compartida altamente estructurada y que es accedida a través de un pequeño conjunto de primitivas que se agregan a lenguajes tradicionales como C y Fortran. El espacio de objetos se llama tuple space, o espacio de tuplas. Los procesos pueden insertar y remover tuplas al espacio, desde cualquier computador.
ADMINISTRADORES DE MEMORIAS EN CLÚSTERS
La operación de clusters requiere de un manejo adecuado de los recursos asociados. Los recursos del cluster deben ser administrados adecuadamente para que el administrador invierta la menor cantidad de tiempo en detectar, investigar y recuperar fallos de hardware y software, y de este modo definir posibles medidas de contingencia y tratar que el sistema esté libre de errores. A su vez, estos pasos permiten la adaptabilidad a los requerimientos y cambios constantes que se presentan en la manipulación de tecnologías cluster, en cuanto se refiere al
hardware, software y al uso de ciertos patrones de diseño.
El administrador de un cluster debe tomar en cuenta algunos aspectos, una vez que se ha completado la instalación de los recursos básicos de hardware y software. Estos aspectos incluyen la configuración e instalación de un sistema de archivos universal, la configuración y administración de recursos mediante herramientas implementadas en software; el monitoreo de sus actividades y el registro de cada uno de los eventos generados por la ejecución de cálculos computacionales.
Varios de los sistemas más importantes para la instalación automática de clusters, incluyen herramientas de monitoreo, administración y registro de eventos mediante paquetes de distribución para sistemas Windows y Linux. Entre estos sistemas están OSCAR y Rocks NPACI; ambos sistemas permiten el uso de herramientas de software que tienen propósitos específicos tales como:
• Definición y administración de nodos.
• Administración de colas por lotes (Batch Queue Management).
• Administración de recursos: grupos NIS (Network Information Service), cuotas de disco y CPU.
• Administración de servicios de resolución de nombres: DNS (Domain Name System para clusters)...
• Registro de usuarios para clusters de dimensiones superiores a los 100 nodos.
• Monitoreo de carga.
La administración de clusters, implica tomar medidas preventivas y planificar tareas. La administración implica los siguientes aspectos:
• Registro de eventos.
• Monitoreo o medida del estado de los recursos del cluster.
• Recuperación ante fallos de hardware, software, incluyendo el sistema de archivos.
• Administración del registro de usuarios y grupos de usuarios, de los servicios del cluster (accounting).
• Planificación de tareas y balanceo de carga.
INTEGRANTES DEL EQUIPO:
ANDRES ALBERTO ALONSO OLIVARES
HUMBERTINA BLANCAS ANGON
BRENDA OLMOS OLIVEROS
Angon- Invitado
Replica
ola. compañeros ..!! bueno mi replica es dirigida hacia el equipo de Luis Ángel Zapata creo que han hecho un buen trabajo de investigación.
me parece muy buen la información que han compartido en este foro activo espero que sigan haciendo lo mismo y que sigan trabajando igual el equipo los felicito y espero que signan así...
me parece muy buen la información que han compartido en este foro activo espero que sigan haciendo lo mismo y que sigan trabajando igual el equipo los felicito y espero que signan así...
EverRios- Invitado
REPLICA
la informacion que han aportado mis compañeros me parece muy buena ya que es entendible y nos es de suma importancia para retroalimentar lo que ya hemos visto en claces
ATTENTAMENTE: HUMBERTINA BLANCAS ANGON
ATTENTAMENTE: HUMBERTINA BLANCAS ANGON
Angon- Invitado
Replica
Mi replica va dirigida para mis compañeros ABEL PIOQUINTO UBIAS, EULISES ECHEVERRIA RODRIGUEZ,SERGIO ZAIR HERNÁNDEZ GÓMEZ,BOLÍVAR PÉREZ MENDOZA, su aportacion es especifica ya que se centra en dicho seguimiento de lo que piden los reactivos!
BrendaOl- Invitado
RETROALIMENTACION
bueno mi replica es para el equipo de mi compañero bolivar, puesto que la informacion mostrada en cada uno de los temas, que se pide es, clara y muy entendible...
angelR- Invitado
replica
mi replika es para Karla Yesenia Macedonio Aburto, Itzia Nuñez Pineda, Ma. Guadalupe Vigueras Cabrera, Kassandra Garcia Pedroza y Alberto Quiroz Albarran exelente participacion kiero felicitarlos..hip hurra hip hurra
atte erik lazaro torres
atte erik lazaro torres
eriklato- Invitado
Página 1 de 2. • 1, 2
Temas similares
» 5 y 6 .- Implementación de Interfaz e Integración de Aplicaciones Distribuidas
» 3.- Administracion De Memoria
» 3.2 MEMORIA REAL
» 3.3 ORGANIZACIÓN DE LA MEMORIA VIRTUAL.
» 3.- Administracion De Memoria
» 3.2 MEMORIA REAL
» 3.3 ORGANIZACIÓN DE LA MEMORIA VIRTUAL.
Permisos de este foro:
No puedes responder a temas en este foro.