Multicomputadoras
-
Upload
mariela-perez -
Category
Engineering
-
view
77 -
download
1
Transcript of Multicomputadoras
Multicomputadores
CPU con acoplamiento fuerte que no
comparten memoria.
Todas las CPUs comparten una memoria
común. Los procesos pueden escribir
mensajes en la memoria, para que después
otros procesos los lean. La sincronización se
puede realizar mediante el uso de mutexes,
semáforos, monitores y otras técnicas.
Tecnología de interconexión:
•topología de estrella.
•Anillo
•rejilla o malla (diseño bidimensional)
•Una variante de la malla es el doble toroide
Esquemas de conmutación
•Paquetes
Almacenamiento de conmutación de paquetes y
retransmisión
•conmutación de circuitos
•Interfaces de red:
Muchas tarjetas de interfaz contienen una CPU
completa, posiblemente además de uno o más
canales de DMA. A estas CPUs se les conoce
como procesadores de red y se están haciendo
cada vez más potentes
El nodo básico de una multicomputadora
consiste en:
•Una CPU
•La memoria RAM
•Una interfaz de red y
•algunas veces un disco duro
Software de comunicación de bajo nivel:
The Enemy el enemigo es el copiado de paquetes
en exceso.
En el mejor de los casos:
• Copia RAMo – NICo
• Copia NICo – NICd
• Copia NICd - RAMd
Software de comunicación de bajo nivel:
En el peor de los casos:
• La NIC se asigna al espacio de direcciones
virtuales del kernel y no al espacio del usuario.
○ El kernel no sabe dónde colocar los paquetes
nuevos.
○ Podría copiar todos los paquetes como medida de
respaldo.
○ Solo puede enviar un paquete a la vez. •
Software de comunicación de bajo nivel:
• Solución se signan las NIC’s al espacio de
direcciones del usuario, no involucra al kernel y
coloca directamente en la NIC. ○ 1er. Problema: Si el sistema asigna el acceso de la
NIC a un solo proceso y no a los demás?
○ 2do. Problema: Qué pasa si A tiene asignada la NIC
en su espacio de direcciones y llega B quien es
ajeno? no se compartirán los recursos entre sí (teoría
de hilos).
Software de comunicación de bajo nivel:
○ 1era. Solución: Asignar la NIC a todos los procesos
que la necesiten.
○ 3er. Problema: Qué pasa si la NIC del host esta
compartida virtualmente?
○ 2da. Solución: Implementar una segunda NIC en el
host para virtualización.
Software de comunicación de bajo nivel:
Otras soluciones: ○ 3ra. Solución: utilizar el chip de DMA para copiar los
paquetes de la RAM.(Problema, el chip utiliza solo
direcciones físicas y no virtuales)
○ 4ta. Solución no hacer llamadas al S.O para asignar
direcciones físicas a las virtuales, únicamente hacer
llamadas para marcar y desmarcar paginas en la
memoria, indicando que no se pueden paginar
temporalmente. Para los pequeños genera una
sobrecarga.
Cómo se comunican los procesos en distintas
CPU’s en una multi computadora?
Se envían mensajes entre sí, en su forma más
simple.
El servicio de comunicación se podría
minimizar a dos llamadas:
• send(dest, &mptr); dest = destino
• receive(direc, &mptr); mptr = *message
Pero como se manejan las direcciones en
múltiples CPU’s?
El addr puede ser compuesto por dos partes:
• No. De CPU
• No. De proceso o de puerto en la CPU
remota.
Comparación entre llamadas con bloqueo y sin
bloqueo (Comunicación da nivel de usuario)
Las llamadas send y receive son síncronas o
llamadas con bloqueo.
Se bloquea el proceso emisor para la
instrucción siguiente.
Una alternativa sería el uso de llamadas sin
bloqueo, a las que se les conoce como
llamadas asíncronas
Ejemplo de llamada sin bloqueo
Por ejemplo el procedimiento send sin bloqueo,
devuelve de inmediato el control al proceso
que hizo la llamada, antes de enviar el
mensaje.
Consecuencias de llamadas asincronas
• El emisor no puede modificar el búfer del
mensaje sino hasta que se haya enviado el
mensaje.
• Es horrible contemplar las consecuencias de
una sobre escritura del mensaje durante la
transmisión.
• El proceso emisor no tiene idea de cuando
terminara la transmisión.
La mejor solución para llamadas
asíncronas
5ta. Solución:
La llegada del mensaje provoca la creación de
un hilo emergente en el espacio de direcciones
del proceso receptor. Este hilo ejecutará un
proceso cuyo parámetro será un apuntador al
mensaje anterior, luego se destruirá
automáticamente cuando se termine el envío.
6ta. Solución:
Es una variante de la anterior es ejecutar el
código del receptor directamente en el
manejador de interrupciones y cada mensaje
llevará la dirección del manejador, pero para
esto debe existir confianza entre emisores y
receptores.
Ventajas:
• Mensajes activos = No se necesita copia, la
recepción es directa desde la NIC hacia el
manejador.
• Facilita crear un hilo emergente