Vous êtes sur la page 1sur 15

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 CPU Memoria CPU

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

(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 Memoria CPU CPU CPU Memoria

Caché Caché Caché

Bus 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0 2 5 1 3 6 4 7 11 13 15 M
E
M
9 8 10 12 14 O
R
I
A
CPU 1 CPU 2 CPU 3 CPU 4

(a)

0 2 5 1 3 6 4 7 11 13 15 M
E
M
9 10 8 12 14 O
R
I
A
CPU 1 CPU 2 CPU 3 CPU 4

(b)

0 2 5 1 3 6 4 7 11 13 15 M
E
M
9 10 8 12 14 O
R
I
A
CPU 1 CPU 2 CPU 3 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.
1. Solicitud

Re-enviad
2. Solicitud

Controlador
Controlador de páginas
1. Solicitud de páginas

2. Respuesta

Propietario
3. Solicitud
Propietario P 3. Respuesta
P 4. Respuesta

(b)
(a)

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 Proceso 2 Proceso 3

Lock (L)
A = 1; Cambiamos a
Región B = 2; Las variables
Critica C = 3; Compartidas A, B, C A, B, C
Unlock (L);

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 DE EL
OBJETO

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

p O
P
O O

DUPLICADO LECTURA DUPLICADO, ESCRITURA

p
O O O p
O O O

15

Vous aimerez peut-être aussi