jueves, 14 de julio de 2011

PONCHADO DE CABLE UTP.

Materiales:
v  CABLE  UTP
v  RJ45
v  JACKET
v  TESTER
v  TIJERAS


  

UNIDAD 4: MEMORIA COMPARTIDA DISTRIBUIDA



UNIDAD 4: MEMORIA COMPARTIDA DISTRIBUIDA
Representan la creación hibrida de 2 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.

4.1 CONFIGURACION DE 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 mas atractivos para la creación de sistemas escalables, de alto rendimiento de sistemas multiprocesador.
4.1.1 DE CIRCUITO BASADOS EN BUS, ANILLO Y CONMUTADOR.
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 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 cahé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:
  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/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.
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.

4.2 MODELOS DE CONSISTENCIA
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

4.2.1 ESTRICTA, CASUAL, SECUENCIAL, DEBIL, DE LIBERACION Y DE ENTRADA.
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.

4.3 MCD EN BASE A PAGINAS

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.

4.3.1 DISEÑO, REPLICA, GRANULARIDAD, CONSISTENCIA, PROPIETARIO Y COPIAS.
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.

4.4 MCD EN BASE A VARIABLES
La comparticion 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 comparticion 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 comparitdas. 

4.5 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.
44Otra 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.