Académique Documents
Professionnel Documents
Culture Documents
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)
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.
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
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
2
4.2. Modelos de Consistencia
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.
Consistencia Secuencial
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.
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
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.
4
4.3. Memoria Compartida Distribuida con Base a Páginas.
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.
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).
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.
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.
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
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.
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.
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.
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.
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.
12
Objetos
ESTADO DE EL
OBJETO
Variables auxiliares
Método 3
Método 2
Método 1
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.
2.- La forma de distribuir las n-adas entre las maquinas i la forma de localizarlas
posteriormente.
Orca
El Lenguaje Orca
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.
14
Administración de los Objetos Compartidos de Orca
p O
P
O O
p
O O O p
O O O
15