Memoria Compartida Distribuida

MEMORIA COMPARTIDA DISTRIBUIDA Ana G. Gómez, Luis E. Sánchez, Francisco J. Morán, Marco A. Solís 4.1 Configuraciones de

Views 88 Downloads 0 File size 331KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

MEMORIA COMPARTIDA DISTRIBUIDA Ana G. Gómez, Luis E. Sánchez, Francisco J. Morán, Marco A. Solís 4.1 Configuraciones de la Memoria Compartida Distribuida Memoria en circuitos En este diseño, el segmento de CPU del circuito tiene direcciones y líneas de datos que se conectan en directo a la porción de memoria. Paquete de Circuitos

CPU

C Memoria

CPU

Memoria

CPU

Direcciones y líneas de datos que conectan el CPU con la memoria

CPU

CPU

(A)

(B)

Multiprocesadores basados en un bus En la figura anterior vemos que la conexión entre el CPU y la memoria es una colección de cables paralelos, algunos con la dirección a la que desea leer o escribir el CPU, algunos para enviar o recibir datos y el resto para controlar transferencias, a esta colección de cables se le llama un bus. El bus está integrado en un circuito, pero en muchos sistemas, los buses son externos y se utilizan para conectar memorias y controladores de E/S. En una PC de escritorio el bus está grabado por lo general en la tarjeta principal (tarjeta madre), que contiene al CPU y parte de la memoria, donde conectan las tarjetas de E/S. En una Laptop, el bus es a veces un cable plano tendido entre los procesadores, las memorias y los controladores de E/S.

CPU

CPU

CPU

Bus

Memoria

CPU

CPU

CPU

Caché

Caché

Caché

Memoria

Bus

1

Multiprocesadores basados en un anillo El espacio de direcciones se divide en una parte privada y una compartida, la parte privada se divide en regiones, de modo que tacada maquina tenga un pedazo para su pila y otros datos y códigos no compartidos. La parte compartida es común para todas las maquinas y se guarda de manera consistente mediante un protocolo basado en bus (colección de cables paralelos). Todas las maquinas están conectadas mediante un anillo de fichas modificado. No existe memoria global centralizada, los caches son lo único que existe. Son una implantación en hardware de la memoria compartida distribuida.

CPU

CPU

CPU

CPU

CPU

CPU

Multiprocesadores con conmutador Mejoran el protocolo de ocultamiento, optimizan el tamaño del bloque, reorganizan los programas para incrementar la localidad de las referencias a memoria. Cada unidad tiene un directorio con un registro de las unidades que tienen copias de sus bloques Unidad

CPU

Memoria

C

C

C

M

C

C

C

M

C

C

C

M

C

C

C

M

C

C

C

M

C

C

C

M

C

C

C

M

C

C

C

M

C

C

C

M Interfaz

(a)

Bus entre unidades

Bus entre superunidades

(b)

2

4.2. Modelos de Consistencia Un modelo de consistencia es en esencia un contrato entre el software y la memoria, si el software acuerda obedecer ciertas reglas, la memoria promete trabajar de forma correcta; y si el software viola estas reglas, todo acaba y ya no se garantiza que la operación de memoria sea la correcta. Consistencia Estricta Cualquier lectura a una localidad de memoria x regresa el valor guardado por la operación de escritura más reciente en x. 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 Secuencial Es un modelo de memoria un poco más débil que la consistencia estricta. Ocurre cuando los procesos se ejecutan en paralelo en diferentes maquinas o en un sistema de tiempo compartido, cualquier intercalado es valido es un comportamiento aceptable, pero todos los procesos deben ver la misma serie de llamadas a memoria. No es una consistencia secuencial cuando un proceso ve un intercalado y otro proceso otro distinto, porque interrumpen su secuencia. La memoria de consistencia secuencial no garantiza que una lectura regrese el valor escrito por otro proceso un nanosegundo antes, un microsegundo antes, o incluso un minuto antes. Solo garantiza que todos los procesos vean todas las referencias a memoria en el mismo orden. Es factible, popular entre los programadores y de uso amplio, pero tiene un desempeño pobre. Consistencia Casual El modelo de consistencia casual hace una distinción entre los eventos potencialmente relacionados por casualidad y aquellos que no lo están.

3

Las escrituras potencialmente relacionadas de forma casual son vistas por todos los procesos en el mismo orden. Las escrituras concurrentes pueden ser vistas en un orden diferente en máquinas diferentes. Representan condiciones menos estrictas donde no existe un acuerdo global del orden de las operaciones 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 de sincronización. Difiere de la consistencia de liberación con laxitud en el hecho de que la segunda no asocia las 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

4.3. Memoria Compartida Distribuida con Base a Páginas. La primera memoria compartida distribuida “clásica” fue la IVY en 1989. Estas se construyeron sobre procesadores conectados mediante una red especializada para la transferencia de mensajes. Ningún procesador puede tener acceso directo a la memoria de otro procesador, este sistema a veces recibe el nombre de NORMA (sin acceso a memoria remota) en contraste con los sistemas NUMA. Una diferencia entre NORMA y NUMA es que el primero, cada procesador puede hacer referencia de manera directa a cada palabra en el espacio global de direcciones, sólo leyendo o escribiendo en él. Las maquinas NUMA sin verdaderos multiprocesadores; el hardware permite que cada procesador haga referencia a cada palabra del espacio de direcciones sin intervalos del software. El objetivo de trabajar con una DSM es agregar software al sistema para permitir que una multicomputadora ejecute programas de un multiprocesador. La DSM es la forma de ejecutar los programas multiprocesadores existen en las multicomputadoras. A esto se le conoce como el problema del “escritorio polvoso”. El trabajo inicial acerca de DSM fue realizado con cuidado con el fin de proporcionar una memoria con consistencia secuencial, de modo que los antiguos programas para multiprocesadores pudieran funcionar sin modificaciones. 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 la instrucción suspendida, que puede entonces concluir con éxito. En la figura --- (a) para un espacio de direcciones con 16 pedazos y cuatro procesadores; si el procesador 1 hace referencia a los datos en los pedazos 0, 2, 5 o 9 la referencias de hacen de manera local. Si por ejemplo hace referencia al pedazo 10 entonces esto provoca un señalamiento como en la figura --- (b).

Replica. Una mejora al sistema básico, que ayuda al desempeño en gran medida, consiste en duplicar los 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. Por ejemplo si el pedazo 10 de la figura --- es una selección de texto de un 5

programa, su uso en el procesador 1 provocara que haga una copia si dañar el original en el procesador 2 como se muestra en la figura --- (c). 0

1

0

2

2

5

9

CPU 1

3

4

5

6

1

3

6

8

10

7

8

9

4

10

7

12

CPU 2

11

11

12

13

14

13

15

15

14

CPU 3

M E M O R I A

CPU 4

(a)

0

2

9

10

5

1

3

4

6

8

CPU 1

7

12

CPU 2

11

13

15

14

CPU 3

M E M O R I A

CPU 4

(b)

0

2

9

10

CPU 1

5

1

3

4

6

8

12

CPU 2

7

11

13

15

14

CPU 3

M E M O R I A

CPU 4

(c)

6

Granularidad Los sistemas DSM son similares a los procesadores en varios aspectos fundamentales. En los dos sistemas cuando se hace referencia a una palabra de memoria no local, se trae un pedazo de memoria con cada palabra, desde su posición actual, y se coloca en la maquina que hace referencia. Aspecto importante del diseño es el tamaño de dicho pedazo. Las posibilidades son una palabra, un bloque (unas cuantas palabras), una página o un segmento (varias páginas). Con un multiprocesador, el transporte de una palabra o unas docenas de bytes es factible, pues el MMU conoce con exactitud la diferencia de referencia y el tiempo para establecerse una transferencia en bus se mide en nanosegundos. Cuando un proceso hace referencia a una palabra ausente, provoca un fallo de página. Al ocurrir un fallo de página faltante simplemente se trae de la otra página o del disco, de modo que el código para el manejo de los fallos de páginas son iguales al caso tradicional. Otra opción consiste en traer una unidad más grande, digamos, una región de 3, 4 u 8 páginas o del disco, de modo que el código para el manejo de los fallos de página son iguales al caso tradicional. La principal ventaja de una DSM es que debido es que el tiempo de arranque de una transferencia en la red es esencial, no tarda mucho más tiempo la transferencia de 1024 bytes que la de 512 bytes. Al transferir datos en grandes unidades, cundo hay que desplazar un a gran parte de espacio de direcciones, el numero de transferencias se reduce con frecuencia. Esta propiedad es importante lo que significa que si un programa ha realizado una referencia a una palabra en una página, es probable que haga referencia a una palabra a una página, haga referencia a otras palabras de la misma página en un futuro inmediato. Un tamaño de páginas excesivo pude introducir un nuevo problema, el hecho de compartir de manera falsa. Obtención de la consistencia secuencial Si las páginas no se duplican, no se pretende lograr la consistencia. Si se duplican las paginas exclusivas para lectura, tampoco existe problema alguno. Las paginas exclusivas para lectura nuca se modifican de modo que todas las copias siempre son idénticas, solo hay una copia para lectura-escritura. En muchos sistemas DSM, cuando un proceso intenta leer una página remota, se crea una página local. La copia local y la página original están configuradas por la MMU, si algún proceso intenta escribir en 8una página duplicada, puede surgir un problema debido a que la modificación de una copia sin modificar las demás es inaceptable. Los multiprocesadores adoptan uno de dos métodos; actualización o invalidación. La actualización permite la escritura de manera local, pero la dirección de cada palabra modificada y su nuevo valor se transmiten por el bus de manera simultánea a todos los demás caches. En la invalidación, la dirección de la palabra por actualizar se transmite por el bus, 7

pero el nuevo valor no. Cuando una caché ve que una de sus palabras está siendo actualizada, invalida el bloque del caché que contiene la palabra, lo que de hecho que la elimina del caché. El resultado final con invalidación es que solo un cache contiene ahora la palabra modificada, por lo que se evitan problemas de consistencia. La MMU sabe cual palabra se escribirá y cuál es su nuevo valor, en un sistema DSM el software no sabe esto. Para descubrirlo crea una copia secreta de la página que se va a modificar (se conoce el numero de pagina) hace que se escriba en la pagina, activa el bit de señalamiento al hardware, para producir un señalamiento después de cada instrucción y reinicia el proceso suspendido, observa el señalamiento y compara la pagina activa con la copia secreta que se creó para ver que palabra ha sido modificada. En este caso la cantidad de trabajo es enorme. 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 ha sido 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 inspeccionar el paquee de solicitud. La transmisión puede utilizar un ancho de banda considerable según el hardware. La siguiente figura --- nuestra un protocolo para la búsqueda de un propietario. Se necesitan 4 mensajes para este protocolo. Controlador de páginas

2. Solicitud Re-enviad

1. Solicitud

1. Solicitud

Controlador de páginas

2. Respuesta

P

3. Solicitud

Propietario

P

Propietario 3. Respuesta

4. Respuesta

(a)

(b)

Figura ---. Localización de la propiedad mediante un controlador central. (a)Protocolo de 4 mensajes. (b)Protocolo de 3 mensajes

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.

8

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 de transmisió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, indicando los procesos que posen tal o cual página.

4.4 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 proporcionan 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. El compilador coloca cada variable compartida en una página separada, es posible que el programador especifique la colocación de variables compartidas del mismo tipo en Munin en la misma página, una mezcla no funciona ya que el protocolo de consistencia depende del tipo de variables que estén en ella. Para ejecutar el programa compilador se inicia un proceso raíz en uno de los procesadores, puede generar nuevos procesos en otros procesadores, el que se ejecuta en paralelo con el principal y se comunica entre si mediante variables compartidas, una vez iniciado en un procesador particular el proceso ya no se puede mover. El acceso a 9

variables compartidas solo puede ser mediante instrucciones normales de lectura y escritura del CPU. Las variables con cerradura pueden ser declaradas y proporcionan procedimientos de biblioteca para cerrarlos y abrirlos, también soportan las barreras, variables de condición y otras de sincronización. Munin se basa en una implementación de software, proporciona las herramientas para que los usuarios formen sus programas en torno de las regiones criticas definidas mediante las llamadas de entrada y de salida (liberación), mientras un proceso esta activo dentro de una región critica es sistema no garantiza la consistencia de las variables compartidas pero cuando sale las variables son actualizadas en todas las maquinas. Munin describe 3 variables: 1. Variables ordinarias: no se comparten solo pueden ser leídas por el proceso que las creo. 2. Variables de daros compartidos: estas son visibles para varios procesadores y parecen secuencialmente consistentes siempre y cuando los procesos las utilicen en las regiones criticas, su acceso es mediante las instrucciones normales para lectura y escritura. 3. Variables de sincronización: como las cerraduras o barreras, estas son especiales y solo pueden tener acceso a ellas por medio de procesos de acceso proporcionado por el sistema, como lock y unlock para las cerraduras increment y para las barreras wait. Liberación de Munin figura (Xs), cada uno se ejecuta en una maquina distinta, el proceso 1 desea entrar a una región critica de código protegida por la cerradura L, lock garantiza que ningún otro proceso compartido esta ejecutado por el momento esa región critica, entonces se tiene acceso a las variables compartidas A, B y C mediante instrucciones normales de la maquina, para finalizar, se llama a unlock y los resultados se propagan a otras maquinas que tiene copias de A,B o C. los accesos a estas variables en otras maquinas mientras proceso 1 sigue en región critica el resultado puede ser indefinido.

Obtiene el acceso exclusivo a esta región crítica

Proceso 1

Región Critica

Lock (L) A = 1; B = 2; C = 3; Unlock (L);

Cambiamos a Las variables Compartidas

Proceso 2

Proceso 3

A, B, C

A, B, C

Red

10

Munin utiliza otras técnicas para mejorar el desempeño, protocolos múltiples. Consiste en permitir al programador que realice anotaciones en las declaraciones de las variables compartidas clasificándolas dentro de sus categorías: 1. Exclusiva para lectura: es cuando una variable exclusiva a lectura provoca un fallo de página Munin busca la variable en el directorio localiza a su propietario y solicita una copia de la pagina requerida, estas no pueden ser modificadas ya que son solo de lectura. 2. Estas utilizan el protocolo de adquisición o liberación, se utilizan dentro de las regiones criticas y son protegidas por variables de sincronización, su objetivo es que las variables emigren de una maquina a otra conforme se entre o salgan las regiones criticas. 3. Escritura compartida: se utilizan cuando el programador indica que es seguro el hecho de que dos o más proceso escriban en ella al mismo tiempo. Munin utiliza también directorios para localizar las paginas que contengan variables compartidas, cuando ocurre algún fallo Munin dispersa las direcciones virtuales que ocasionaron la falla, con un fin de determinar la entrada de la variable en el directorio, posteriormente ve la categoría de la variable para ver quién es el posible propietario, para variable compartida el propietario es el ultimo que la adquirió para acceso de escritura, y para variable compartida migratoria el propietario es el que la posee en ese instante. Munin posee un directorio de variables de sincronización, estas se localizan similar a las variables compartidas ordinarias. Cuando un proceso adquiere una cerradura verifica si ese mismo posee la cerradura, si el la posee y la cerradura esta libre se autoriza la solicitud, si la cerradura no es local se localiza mediante directorios de sincronización, este mantiene un registro del propietario, si la cerradura es libre se autoriza y si no el solicitante se agrega al final de la cola, de esta manera se espera su proceso en la cola, al liberar la cerradura el propietario la manda al siguiente proceso de la lista. MIDWAY Midway es un sistema con memoria distribuida compartida, consiste en compartir las estructuras de datos individuales, su objetivo es permitir que los programas multiprocesador existentes y los nuevos se ejecuten de manera eficiente en las multicomputadoras con ligeros cambios en el código, los programas Midway son programas convencionales escritos en C, C++, o ML con información adicional del programador. Utiliza el paquete de hilos C de match para el paralelismo, un hilo puede separarse en uno o más hilos, todos los hilos comparten el mismo espacio lineal de direcciones, el cual tiene datos compartidos y privados, el trabajo de Midway es mantener las variables compartidas consistentes de manera eficiente. La consistencia se mantiene pidiendo que los accesos a las variables compartidas y a las estructuras se realice dentro de la sección critica conocido como el sistema de tiempo de Midway, cada una de estas secciones está protegida por una variable de sincronización. Midway soporta la consistencia de entrada y funciona de la siguiente manera, un proceso entra a una región critica llamando a un procedimiento de la biblioteca lock con una variable de cerradura como parámetro, se necesita una cerradura exclusiva cuando hay que actualizar 11

una o más variables compartidas, al llamar lock el sistema de tiempo de ejecución Midway adquiere la cerradura y al mismo tiempo actualiza todas las variables asociadas con esa cerradura, puede requerir del envió de mensajes a otros procesos para obtener los valores más recientes, al recibir todas las respuestas se otorga la cerradura y el proceso inicia su ejecución de la región critica, cuando el proceso termina la sección critica libera la cerradura. Implantación, para obtener una cerradura exclusiva es necesario localizar al propietario de la cerradura que este es el último proceso que la adquirió en forma exclusiva, cada proceso lleva el registro del probable propietario, si este proceso no está utilizando en la actualidad la cerradura se transfiere a la propiedad, y si esta en uso el proceso espera que la cerradura este libre. Al momento en que se adquiere la cerradura el proceso que la adquiere tiene que actualizar su copia de todas las variables compartidas.

4.5 Memoria Compartida Distribuida Basada en Objetos Los sistemas de memoria compartida distribuida basados en páginas que utilizan el hardware de unidad de administración de memoria para señalar accesos a páginas faltantes, aunque tiene muchas ventajas también tienen sus desventajas las cuales en muchos de los lenguajes de programación, los datos se organizan en objetos, paquetes módulos u otras estructuras de datos. Si un proceso hace referencia a un objeto, muchas veces se necesita de todo el objeto, por lo que se tiene que trasportar los datos a través de la red mediante unidades de objetos no de páginas. En las variables compartidas utilizadas en Munin y Midway, es un paso para organizar la memoria compartida de una forma más estructurada en ambos sistemas se proporciona la información acerca de las variables que son compartidas y las que no, proporcionan información de el protocolo en Munin y de asociación en Midway. Si hay errores en las anotaciones puede traer consecuencias graves. Si se utiliza un modelo de programación de alto nivel la programación en los sistemas de memoria compartida distrubuida puede ser mas sencilla y menos propensa a errores. También se introducen ciertas optimizaciones mas difíciles de realizar en un modelo de programación menos abstracto.

12

Objetos Un objeto es una estructura de datos encapsulada definida por el programador como se muestra en la siguiente figura.

ESTADO OBJETO

DE

EL

Variables auxiliares Método 3 Método 2 Método 1

Consta de datos internos, el estado del objeto i procedimientos llamados métodos u operaciones. En una memoria distribuida compartida basada en objetos los procesos comparten un espacio abstracto ocupado por objetos compartidos, la localización i administración de los objetos es controlada automáticamente por el sistema de tiempo de ejecución como se muestra en la siguiente figura. Objeto Espacio de objetos

Proceso

Cualquier proceso llama al método de cualquier objeto, sin importar la posición del proceso del objeto el sistema operativo y el sistema de tiempo de fusión se encarga de que funcione la llamada a un método sin importar la posición del objeto o del proceso. Linda Proporciona a los procesos en varias maquinas con una memoria distribuida compartida muy estructurada, para acceder a esta memoria es mediante un conjunto de operaciones primitivas que se agregan a los lenguajes existentes, tiene muchas ventajas la principal seria: que los usuarios no tienen que aprender un nuevo lenguaje. 13

Linda es muy portable y a sido implantado en muchos sistemas distribuidos y paralelos. Espacio de N-ADAS. Es abstracto, es global en todos sus temas y los procesos de cualquier maquina pueden insertar o eliminar n-adas sin importar la forma o el lugar donde estén guardados, no es un sistema basado en objetos solo proporciona una cantidad fija de operaciones integradas y no hay forma de definir otras nuevas. Implantación de Linda Son eficientes en varios tipos de hardware, para todas las implantaciones, un procesador analiza el programa en linda extrae la información útil y la convierte en lenguaje básico. Para realiza una implantación eficiente de linda debe resolver 2 problemas: 1.- la forma de simular el direccionamiento asociativo sin ninguna búsqueda masiva. 2.- La forma de distribuir las n-adas entre las maquinas i la forma de localizarlas posteriormente. Orca Sistema de programación paralela que permite los procesos de diferentes maquinas el acceso controlado a una memoria distribuida compartida consiste en objetos protegidos. El sistema orca del lenguaje, el compilador, y el sistema de tiempo de ejecución, quien en realidad controla los objetos compartidos durante la ejecución. El Lenguaje Orca Es un lenguaje tradicional cuyos enunciados secuenciales se basan de manera vaga en modula-2, es un lenguaje con tipos seguros sin apuntadores ni sobrenombres. Dos características de orca importante para la programación distribuida son los objetos, un objeto es un tipo abstracto de dato similar a un paquete ada encapsula las estructuras de datos internas y los procedimientos escritos por el usuario, los objetos son pasivos no contienen hilos a los cuales enviar mensajes, los procesos tienen acceso a los datos internos de un objeto, los objetos no heredan propiedades de otros objetos, orca se considera un lenguaje basado en objetos más que un lenguaje orientado a objetos. Las operaciones sobre los objetos compartidos son atomicas y secuencialmente consistentes. El sistema garantiza que si varios procesos realizan operaciones sobre el objeto compartido de manera casi simultanea, además, las operaciones aparecen con el mismo orden para todos los procesos.

14

Administración de los Objetos Compartidos de Orca Orca es controlada por el sistema de tiempo de ejecución. Funciona en las redes de transmisión o multi-transmisión y en las redes puntuales. El sistema de tiempo de ejecución controla la réplica, migración, consistencia y llamada a operaciones relativas a los objetos. Al realizar una operación sobre un objeto, el compilador llama a un procedimiento del sistema de tiempo de ejecución, especificando el objeto, la operación, los parámetros y una bandera que indica que un objeto será modificado. La acción realizada depende de si el objeto esta duplicado, si se dispone de una copia local, si será leído o escribirá en el, y si el subyacente soporta la transmisión confiable con un orden local. COPIA UNICA, REMOTA

COPIA UNICA, LOCAL

O

p P

O

O

O

DUPLICADO LECTURA

p

O

O

DUPLICADO, ESCRITURA

O

p

O

O

O

O O O O

15