2. Sistemas Distribuidos
Paso de mensajes
René Guamán-Quinche
Facultad de la Energía, las Industrias y los Recursos Naturales No Renovables
Carrera de Ingeniería en Sistemas/Computación
Mayo, 2021
Loja, Ecuador
3. 3
1. Modalidades de Envío / Recepción
2. Finalización de operación
3. Selección de mensajes
4. Problema: Serialización
5. Comunicación colectiva
Contenido
4. 4
Modelo de Comunicación
Mecanismos para que los procesos se comuniquen y sincronicen sus
acciones
Sistemas de mensajes
Los procesos se comunican entre sin recurrir a variables compartidas
Se proporcionan dos operaciones
Send: enviar mensajes
Receive: recibir mensajes
El tamaño del mensaje es fijo o variable
7. 7
Modalidades de envío / recepción
Dos formas: envío con buffer / envío síncrono
envío síncrono
El síncrono es el envío normal
Hasta que el receptor no haga el recieve el send se queda bloqueado
Es decir hay una sincronización y por tanto hay una espera
8. 8
Modalidades de envío / recepción
Envío con buffer
Va a tener un buffer del usuario va tener un buffer auxiliar, donde va a tener una copia del msj
El send no envía directamente, sino se hace una copia del mensaje a este buffer intermedio y el
envío se lo hace desde este buffer temporal
El send con buffer finaliza cuando el mensaje se ha copiado de memoria del programa a un
buffer del sistema
El send síncrono no finaliza hasta que se inicia el recv correspondiente a otro proceso
Ventaja: la operación send puede completarse antes de que el otro proceso haga el recieve, por
lo tanto la sincronización no hace falta
Buffer: región de memoria que va a contener el mensaje que se tiene que enviar
Cuando hacemos un send, el usuario tiene que proporcionar un buffer, que normalmente da un
puntero al inicio de la región de memoria más la longitud que ocupa el mensaje
9. 9
Modalidades de envío / recepción
Operaciones bloqueantes / no bloqueantes – si las primitivas se bloquean o no
Lo normal es que se bloqueen → send bloqueante se espera a que el otro proceso haga el receive
o bien en el caso del envío con buffer se espera que haga la copia del msj ...
Al finalizar la llamada send bloqueante es seguro modificar el buffer de envío
Al finalizar la llamada a recv bloqueante se garantiza que cuando se a terminado la operación, el
buffer de recepción ya contiene el mensaje
Las operaciones no bloqueantes hacer retornar enseguida y por tanto no se está seguro si en
receive a llegado o no,
El programador es el encargado de asegurarse si se a completado la operación o no
11. 11
Finalización de operación
Operaciones no bloqueantes hay que poder determinar la finalización
En el recv para poder leer el mensaje
En el send para poder sobreescribir la variable que enviado
El send y recv no bloqueantes nos dan un numero de operación req
Primitivas:
wait (req) se bloquea hasta que ha terminado la operación req
Test (req) indica si finalizó o no
waitany y waitall cuando hay varias operaciones pendientes
Se puede usar para solapar comunicación y cálculo
12. 12
Selección de mensajes
Cuándo hay muchos mensajes que se intercambian entre procesos, qué pasa cuando un proceso
revice mensajes de varios proceso
La operación recv requiere un identificador de proceso id
No concluye hasta que llega un mensaje de id
Se ignora los mensajes procedentes de otros procesos
MPI: es más flexible, permite recibir de cualquier proceso
Además, se usa la etiqueta (tag) para distinguir entre mensajes
También permite comodín para indicar cualquier etiqueta
Ejemplo: recv(z, any_src, any_tag, status) aceptará el primer mensaje que entre
La primitiva recv tiene un argumento status donde aparece el emisor y la etiqueta
Los mensajes no seleccionados no se pierden, quedan en una “cola de mensajes”
13. 13
Problema: interbloqueo
El mal uso de send y recv puede producir un interbloqueo
Caso de comunicación síncrona
Ambos quedan bloqueados en el envío
Caso de comunicación con buffer
En el caso anterior no causaría interbloqueo
Puede haber otras situaciones con interbloqueo
Posible solución: intercambiar el orden de uno de ellos
/*proceso 0 */
Send (x, 1);
Recv (y, 1)
/*proceso 1 */
Send (y, 0);
Recv (x, 0)
/*proceso 0 */
Send (x, 1);
Recv (y, 1)
/*proceso 1 */
Send (y, 0);
Recv (x, 0)
14. 14
Problema: Serialización
Cada proceso tiene que enviar un dato a su vecino de la deracha
Posibles soluciones
Protocolos pares-impares: los procesos pares hacen una variante, los impares la otra no
Send o recv no bloqueante
Operaciones especiales combinadas: sendrecv
Posible solución: intercambiar el orden de uno de ellos
15. 15
Comunicación colectiva
Las operaciones colectivas involucran todos los procesos de un comunicador (en muchos casos,
uno de ellos tiene un papel destacado – proceso raíz)
Sincronización (barrier): cada proceso espera a que todos lleguen
Movimiento de datos: uno o varios envían a uno o varios
Reducciones: Además de comunicar se realiza un cálculo sobre los datos
Estas operaciones pueden realizarse con comunicación punto a punto, pero es recomendable usar
las primitivas correspondientes
Existen varios algoritmos para cada caso (linea, árbol)
La solución óptima suele depender de la arquitectura (topología de red)
16. 16
Comunicación colectiva - tipos
Difusión uno a todos
Todos reciben lo que tiene el proceso raíz
Reducción de todos a uno
Operación dual a la difusión
Los datos se combinan mediante un operador asociativo
Reparto (scatter)
La raíz envía un mensaje individualizado a cada uno
Recogida o concatenación (gather)
Operación dual al reparto
Similar a la reducción pero sin operar
Difusión todos a todos
P difisiones simultáneas, con proceso raíz distinto
Al final, todos almacenan todos los datos
Reducción todos a todos
Operación dual a la difución todos a todos
17. 17
Cŕeditos
• Transparencias basadas por:
• Coulouris Dollimore, Distributed Systems: Concepts and Design
https://ce.guilan.ac.ir/images/other/soft/distribdystems.pdf
• García-Carballeira F., Tema 3 Comunicación y sincronización entre
procesos
http://ocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos-2013/
Tema3_ComunicacionYsincronizacion.pdf/view
• Sanabria, John, Sistemas Distribuidos – Hilos – Prácticas,
https://www.youtube.com/playlist?list=PLNqsgMwXL3mFmd8X8Fg
vZ_6ljjzucIDbN