lunes, 26 de noviembre de 2012


                                      Unidad 5 

Usos y tendencias de los sistemas distribuidos



Administración de Sistemas Distribuidos. La administración de sistemas distribuidos incluye las actividades como: manejo de la versión y distribución del software, monitoreo de la utilización de los recursos y el mantenimiento del sistema de seguridad, entre otros. Los administradores de sistemas distribuidos se ocupan de monitorear continuamente al sistema y se deben de asegurar de su disponibilidad. Para una buena administración, se debe de poder identificar las áreas que están teniendo problemas así como de la rápida recuperación de fallas que se puedan presentar. La información que se obtiene mediante el monitoreo sirve a los administradores para anticipar situaciones críticas. La prevención de estas situaciones ayuda a que los problemas no crezcan para que no afecten a los usuarios del sistema. 


5.1 Administracion Sistemas Distribuidos


La administración de sistemas distribuidos incluye las actividades como: manejo de la versión y distribución del software, monitoreo de la utilización de los recursos y elmantenimiento del sistema de seguridad, entre otros. Los administradores de sistemas distribuidos se ocupan de monitorear continuamente al sistema y se deben de asegurar desu disponibilidad. Para una buena administración, se debe depoder identificar las áreas que están teniendo problemas así como de la rápida recuperación de fallas que se puedanpresentar. La información que se obtiene mediante el monitoreosirve a los administradores para anticipar situaciones críticas. Laprevención de estas situaciones ayuda a que los problemas nocrezcan para que no afecten a los usuarios del sistema.


Configuración de SOD


Instalación Tipica
§ Soporte de instalación del Sistema Operativo (CD con auto-arranque)
§ Información del hardware disponible en la máquina destino
§ Drivers de los dispositivos hardware para el sistema operativo elegido (mínimo la tarjeta gráfica, aunque es 
muy aconsejable disponer de conexión a internet)

De forma general, la instalación se compone de los siguientes pasos:
1. Configuración del dispositivo de arranque en la BIOS
2. Creación de las particiones en el disco duro
3. Creación del sistema de ficheros
4. Selección de paquetes
5. Configuración
6. Instalación y configuración de aplicaciones

En el caso concreto de a práctica, se se va a instalar un sistema operativo Microsoft Windows. El instalador se subdivide en dos partes fundamentales:

1. Instalación modo texto: Se encarga de detectar y cargar los controladores necesarios. Permite crear las particiones y sistema de ficheros y finaliza realizando la copia de los ficheros imprescindibles.

2. Instalación gráfica: encargada de realizar la copia de los ficheros del sistema y aplicaciones del sistema operativo y permite configurar las opciones de internacionalización y de red. 





5.2 Instalacion de Sistemas Operativos Distribuidos

Los sistemas operativos distribuidos abarcan los servicios de los de red, logrando integrar recursos ( impresoras, unidades de respaldo, memoria, procesos, unidades centrales de proceso ) en una sola máquina virtual que el usuario aceza en forma transparente. Es decir, ahora el usuario ya no necesita saber la ubicación de los recursos, sino que los conoce por nombre y simplemente los usa como si todos ellos fuesen locales a su lugar de trabajo habitual.

Todo lo anterior es el marco teórico de lo que se desearía tener como sistema operativo distribuido, pero en la realidad no se ha conseguido crear uno del todo, por la complejidad que suponen: distribuir los procesos en las varias unidades de procesamiento, reintegrar sub-resultados, resolver problemas de concurrencia y paralelismo, recuperarse de fallas de algunos recursos distribuidos y consolidar la protección y seguridad entre los diferentes componentes del sistema y los usuarios.

Los avances tecnológicos en las redes de área local y la creación de microprocesadores de 32 y 64 bits lograron que computadoras mas o menos baratas tuvieran el suficiente poder en forma autónoma para desafiar en cierto grado a los mainframes, y a la vez se dio la posibilidad de intercomunicarlas, sugiriendo la oportunidad de partir procesos muy pesados en cálculo en unidades más pequeñas y distribuirlas en los varios microprocesadores para luego reunir los sub-resultados, creando así una máquina virtual en la red que exceda en poder a un mainframe.

El sistema integrador de los microprocesadores que hacer ver a las varias memorias, procesadores, y todos los demás recursos como una sola entidad en forma transparente se le llama sistema operativo distribuido.

Las razones para crear o adoptar sistemas distribuidos se dan por dos razones principales: por necesidad ( debido a que los problemas a resolver son inherentemente distribuidos ) o porque se desea tener más confiabilidad y disponibilidad de recursos. En el primer caso tenemos, por ejemplo, el control de los cajeros automáticos en diferentes estados de la república.





5.3 Estandares de administracion en sistemas operativos distribuidos.


Los estándares son aquellas normas usuales, los propósitos, los objetivos, a alcanzar, las metas a alcanzar y aquellos índices que integran los planes, y todo dato o cifra que pueda emplearse como medida para cumplirlas, son considerados como estándares.
Estas medidas son indispensables para el control, ya que indican la manera en que deseas que se ejecute una actividad. En la práctica, son los objetivos declarados y definidos de la organización y por esa razón los estándares deben abarcar las funciones básicas y áreas clave de los resultados logrados.
Un estándar muy utilizado en los sistemas distribuidos es el CORBA, en el cual nos basaremos para explicar este tema.




5.4 Computo de alto rendimiento a bajo costo

Un cluster es una solución computacional estructurada a partir de un conjunto de sistemas computacionales muy similares entre si (grupo de computadoras), interconectados mediante alguna tecnología de red de alta velocidad, configurados de forma coordinada para dar la ilusión de un único recurso; cada uno de estos sistemas estará proveyendo un mismo servicio o ejecutando una (o parte de una) misma aplicación paralela. Un cluster debe tener como característica inherente la compartición de recursos: ciclos de CPU (Central Processing Unit), memoria, datos y servicios.

Los sistemas computacionales (nodos) que conforman el cluster podrían ser computadoras de uno o varios procesadores; estos sistemas podrían estar montados en un rack, ubicados en un espacio dedicado exclusivamente a almacenar computadoras, o en el cubículo de un empleado; lo que cuenta es como están relacionados, como son accesados, y que tipo de aplicación están ejecutando.
La idea de los clusters tomo impulso en los 90s, cuando se dispuso de microprocesadores de alto rendimiento, redes de alta velocidad, y herramientas estándar para computación distribuida (Message Passing Interface, MPI, Parallel Virtual Machine, PVM (Quinn, 2003; Pacheco, 1997)) y a costos razonables. Pero también el desarrollo de los clusters fue impulsado por deficiencias de los Sistemas Multiprocesador Simétricos (Symmetric MultiProcessors, SMPs (Culler y Singh, 1999)). Las grandes máquinas SMP son costosas, propietarias, tienen un único punto de falla, no están ampliamente disponibles, y sufren de problemas de escalabilidad, en términos de número de procesadores y capacidad de memoria. Según Lucke (2005), los sistemas SMP más grandes conocidos, escalan hasta un número de alrededor de 128 CPUs.
En 1994, T. Sterling y D. Becker, trabajando en CESDIS (Center of Excellence in Space Data and Information Sciences) bajo el patrocinio del Proyecto de la Tierra y Ciencias del Espacio (ESS), construyeron un cluster de computadoras que consistía de 16 procesadores 486DX4, usando una red Ethernet a 10Mbps, con un costo de $40,000. Ellos llamaron a su sistema Beowulf, un éxito inmediato, y su idea de proporcionar sistemas en base a COTS (Components Of The Shelve) para satisfacer requisitos de cómputo específicos, se propagó rápidamente a través de la NASA y en las comunidades académicas y de investigación. En la actualidad, muchos clusters todavía son diseñados, ensamblados y configurados por sus propios operadores; sin embargo, existe la opción de adquirir clustersprefabricados.
El problema que se intenta resolver con estos clusters es el de disponer de capacidad computacional equivalente al encontrado en poderosas y costosas supercomputadoras paralelas tradicionales (Cray/SGI T3E) (Gordon y Gray, 2001), pero empleando componentes de bajo costo y ampliamente disponibles (commodities). Los altos requerimientos computacionales a los que se hace mención, son típicos en aplicaciones como algoritmos genéticos, simulación de líneas de fabricación, aplicaciones militares, bases de datos, síntesis de imágenes, recuperación de imágenes por contenido, simulación de modelos para clima, análisis de sismos, algoritmos para solución a problemas de electromagnetismo, dinámica de fluidos, química cuántica, biomedicina, etc. (Buyya, 1999, Vol. II).
Las grandes supercomputadoras tradicionales, propietarias y costosas, están siendo reemplazadas por clusters a una fracción del costo. Esto permite a pequeñas organizaciones de investigación, departamentos de IT (Information Technology), y grupos de ingeniería, poseer sus propias supercomputadoras, a una fracción del costo previamente requerido para obtener el equivalente computacional. Otros aspectos económicos a considerarse son costos explícitos, necesarios para utilizar y mantener un centro especializado con supercomputadoras: espacio, aire acondicionado, consumo de potencia, personal para administración y consultas, etc. Cuando se posee un cluster estos costos están implícitos ya que se operan centros propios y no se los debe sustentar como usuarios de un centro especializado (Gordon y Gray, 2001).
En consecuencia, una de las ventajas de una solución con clusters es construir una plataforma que se ajuste a un presupuesto determinado y que sea adecuada para un grupo considerable de aplicaciones. Además, un cluster puede ser expandido con relativa facilidad, incrementando el número de nodos o la capacidad de los nodos individuales existentes, añadiendo memoria y/o procesadores.



5.5 Super computo basado en clustering como solucion a la necesidad de alto procesamiento en la nueva era

El número de procesadores en un cluster se ha incrementado notablemente, se habla de cientos de procesadores. De acuerdo al reporte de http://www.top500.org, de Noviembre de 2004, entre las diez supercomputadoras mas rápidas del mundo, figuran cinco basadas en clusters, empleando un número de nodos en el orden de 4000. El cluster más rápido se denomina MareNostrum, un eServer BladeCenter JS20, formado por 4536 procesadores PowerPC970 de 2.2 GHz e interconectados con una red Myrinet, es considerada la cuarta computadora más veloz y fue desarrollada por el Barcelona Supercomputer Center de España. La quinta computadora más veloz se denomina Thunder, formada por 4096 procesadores Intel Itanium 2 de 1.4 GHz e interconectados con una red Quadrics, fue desarrollado por Lawrence Livermore National Laboratory de los Estados Unidos. La sexta computadora se denominaASCI Q y está conformada por 8192 procesadores AlphaServer SC45 de 1.25 GHz, fue desarrollada por Los Alamos National Laboratory de los Estados Unidos. La séptima computadora se denomina System X y está conformada por 2200 procesadores 1100 Dual Apple XServe de 2.3 GHz y posee dos redes una Cisco GigE y otra Mellanox Infiniband, fue desarrollada por Virginia Tech de los Estados Unidos. La décima computadora también es un cluster, se denominaTungsten y está formada por 1450 procesadores P4 Xeon de 3.06 GHz y utiliza una red Myrinet para la interconexión de los nodos, fue desarrollada por NCSA de los Estados Unidos.
En la actualidad, se pretende que este tipo de solución se inserte entre las tendencias ampliamente utilizadas en el mundo de IT, que no sean únicamente un instrumento en universidades e institutos de investigación. Más aún, como Gordon y Gray (2001) señalan, se prevé una convergencia de clusters con tópicos como computación P2P (peer-to-peer) y computación Grid (Grid Computing).
Por lo mencionado, existe la necesidad de un adecuado entendimiento de lo que la computación con clusters puede ofrecer, cómo los clusters de computadoras pueden construirse, y cuál su impacto en aplicaciones identificadas como adecuadas para un ambiente basado en clusters.


5.6 Tendencias de investigacion

Las razones para construir sistemas distribuidos son las siguientes:
Computación más rápida: si un cálculo dado se puede subdividir en varios subcalculos susceptibles de ejecución concurrente, un sistema distribuido podría permitirlo distribuir el cálculo entre los distintos sitios, y ejecutándolo de forma concurrente.
Confiabilidad: si en un sitio de un sistema distribuido falla, los sitios restantes podrían seguir funcionando.
Comunicación: hay muchos casos en los que los programas necesitan intercambiar datos con otros programas del mismo sistema Si muchos sitios están conectados a través de una red de comunicaciones, los procesos de diferentes sitios tienen la oportunidad de intercambiar información. Los usuarios podrían iniciar transferencia de archivo o comunicarse entre sí por correo electrónico.


5.7 Sistemas distribuidos como infraestructura para el soporte de las empresas en las TI

El impacto en los sistemas de información y telecomunicación ya es, y será, muy importante. Éstas son algunas de las características y tendencias que marcan estos cambios en la sociedad.
La idea de comunicar e intercambiar dinámicamente servicios e información dio origen a los sistemas distribuidos. Esta noción indica que las necesidades de un mundo real, los servicios deben adherirse o quitarse según sean requeridos. Los sistemas distribuidos permiten la existencia de una multiplicidad de estaciones de trabajo, las cuales ofrecen los recursos a los usuarios mediante un modelo de red.
El usuario (sociedad) no sabe concretamente la maquina que ofrece servicio ni su dirección o ubicación geográfica; únicamente conoce su nombre o identificador y en muchos caso ni siquiera este ultimo.
El objetivo es accesar aun recurso a distancia como seria en una aplicación local sin conectarse en ningún caso con la maquina propietaria.



martes, 20 de noviembre de 2012

       UNIDAD 4: MEMORIA COMPARTIDA DISTRIBUIDA



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:

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