0% encontró este documento útil (0 votos)
78 vistas17 páginas

Configuraciones y Consistencia en DSM

Este documento describe diferentes configuraciones y modelos de memoria compartida distribuida, incluyendo configuraciones basadas en bus, anillo o conmutador, y modelos de consistencia como estricta, causal y débil. También cubre temas como memoria compartida distribuida basada en páginas, variables u objetos, y administradores de memoria en clusters.

Cargado por

Erik Rapero
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
78 vistas17 páginas

Configuraciones y Consistencia en DSM

Este documento describe diferentes configuraciones y modelos de memoria compartida distribuida, incluyendo configuraciones basadas en bus, anillo o conmutador, y modelos de consistencia como estricta, causal y débil. También cubre temas como memoria compartida distribuida basada en páginas, variables u objetos, y administradores de memoria en clusters.

Cargado por

Erik Rapero
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 17

INDICE

4.1. Configuraciones de memoria compartida distribuida: de circuitos, basada en bus, anillo o con

ALUMNO: CARDENAS ARENAS ERIK DAVID


GRUPO: 1501
DOCENTE: ALBERTO ALI LOPEZ HERNADEZ
conmutador………………………………………………………………………………………………….

4.2. Modelos de consistencia: Estricta, causal, secuencial, débil, de liberación, y de


entrada………………………………………………………………………………………………………

4.3. Memoria compartida distribuida en base a páginas: Diseño, réplica, granulada, consistencia,
propietario, y copias………………………………………………………………………………………...

4.4. Memoria compartida distribuida en base a variables…………………………………………….

4.5. Memoria compartida distribuida en base a


objetos………………………………………………………………………………………………………

4.6. UNIDAD IV – MEMORIA


COMPARTIDA DISTRIBUIDA (MC)
SISTEMAS OPERATIVOS II

Administradores de memorias en
clusters…………………………………………………………………………………………………….
4.1 Configuraciones 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
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.
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 está en el caché, entonces buscarla en la memoria y copiarla a su


caché.
 Si la palabra está 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 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:

1. INVALIDO: Este bloque de caché no contiene datos válidos.


2. LIMPIO: La memoria está actualizada, el bloque puede estar en otros cachés.
3. 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:

1. La consistencia se logra haciendo que todos los cachés husmeen el bus.


2. El protocolo se integra dentro de la unidad de administración de memoria.
3. 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 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/segundos . 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:

1. VALIDO: El bloque está presente en el caché y está actualizado.


2. EXCLUSIVO: La copia local es la única.
3. ORIGEN: Se activa si ésta es la máquina origen del bloque.
4. INTERRUPCION: Se utiliza para forzar interrupciones.
5. POSICION: Indica la localización del bloque en el caché si esta presente y es válido.
6. Protocolo Memnet.
7. 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, coloca 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. Por 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

4.2 Modelos de Consistencia

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.

Los ejemplos incluyen:

  Linealizadle (también conocido como el estricta o consistencia atómica)


  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

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. 

Si con cada escritura es necesario actualizar todas las copias, el envío de las páginas por la
red provoca que el tiempo de espera aumente demasiado, convirtiendo este método en
impracticable
Consistencia Casual 

 La condición a cumplir para que unos datos sean causalmente consistentes es:

o  Escrituras que están potencialmente relacionadas en forma causal deben ser vistas
por todos los procesos en el mismo orden. 
o 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

4.3 Memoria compartida distribuida en base a Paginas


El esquema de DSM propone un espacio de direcciones de memoria virtual que integra la
memoria de todas las computadoras del sistema, y su uso se realiza mediante paginación.
Las páginas quedan restringidas a estar necesariamente en un único nodo. 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 nodos. 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 nodo 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.
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.

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.
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.

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.

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.
    Categorías de variables:

 Exclusiva para lectura.


 Migratoria.
 De escritura compartida.
 Convencional.

Midway

  Compartir estructuras de datos individuales.


  C, C++ o ML convencional con información adicional.
  Mantiene consistentes las variables compartidas de manera eficiente

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 cambiarán 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

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.

Ventajas:

 Es mas 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.

Ejemplos: Linda y Orca

 No existe una memoria lineal en bruto.

 La localización y administración de los objetos es controlada por el sistema de


tiempo de ejecución.
  Los objetos se pueden duplicar o no. En caso de duplicarse, hay que decidir
cómo se harán las actualizaciones.
  Evitan el compartimiento falso.

El Sistema Linda

  El acceso a memoria se hace mediante un pequeño conjunto de primitivas que


se agregan a los lenguajes existentes.
 Las ventajas son que no hay que aprender un nuevo lenguaje, es sencillo de
implantar y es portable.
  Se basa en un espacio de n-adas global a todo el sistema.

Las n-adas de Linda

 Son análogas a las estructuras de C.


 Las operaciones sobre ellas son restringidas; sólo se soportan cuatro
operaciones:

out(“matrix-I”, i, j, 3.14)

in(“abc”, 2, ?i)

read(“abc”, 2, ?i)

eval(X,Y,Z), con X,Y,Z expresiones.


El Sistema Orca

 El acceso a memoria se basa en un esquema de objetos protegidos.


 Consta del lenguaje, el compilador y el sistema de tiempo de ejecución.
  Se basa en Módula 2.
  Los objetos son pasivos y no se soporta la herencia.
  Cada operación consta de una lista (protección, bloque de enunciados).
 Cuenta con una operación fork, en la que se basa la distribución de objetos.
 Las operaciones son atómicas y secuencialmente consistentes.
 Usa sincronización de la exclusión mutua y sincronización de condiciones.

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.

¿Qué son los objetos?

Estructura de datos encapsulada definida por el programador. Se componen de datos


internos (estado) y operaciones o métodos. ‡ Cumplen con la propiedad de ocultamiento de
la información, por lo que contribuyen con el modularidad.

No existe una memoria lineal en bruto.

 La localización y administración de los objetos es controlada por el sistema de tiempo


de ejecución.
 Los objetos se pueden duplicar o no. En caso de duplicarse, hay que decidir cómo se
harán las actualizaciones.
 Evitan el compartimiento falso.

Sus principales desventajas son que no soportan programas multiprocesadores antiguos y el


costo adicional que genera el acceso indirecto a los datos.

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.
4.6. Administradores de memorias en clústeres.
La operación de clústeres 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.

Registro de Eventos
El manejo de logs, o el registro de eventos generados tanto por el kernel del sistema operativo, como
por los diferentes servicios que han sido habilitados para el establecimiento de comunicación entre
los nodos, se lo puede realizar mediante comandos del sistema operativo Linux para poder visualizar
los archivos de logs, o utilizar herramientas de monitoreo tales como:
LogCheck
Swatch
LogSentry
LogDog

Monitoreo y Estado del Clúster


El monitoreo permite conocer si todos los componentes de hardware y software están disponibles y
operando de acuerdo con lo esperado. Es decir, debe asegurarse que todos los componentes de
hardware estén disponibles durante el arranque del sistema operativo (CPU, memoria, discos,
dispositivos de red y otros), y de igual forma, que todos los servicios de software, tales como:
planificadores de tareas, administradores de recursos, y demonios de monitoreo se ejecuten
correctamente en el clúster. 

Entre las herramientas de monitoreo se pueden mencionar:


Big Brother
Cluemon
Ganglia
Nagios
PARMON
Supermon

También podría gustarte