Actualizado el 21 de Marzo del 2018 (Publicado el 23 de Febrero del 2018)
698 visualizaciones desde el 23 de Febrero del 2018
79,6 KB
30 paginas
Creado hace 20a (25/05/2004)
Tema 3. Paso de
Tema 3. Paso de
mensajes
mensajes
Bibliografía
(cid:132) Programación Concurrente
(cid:132) J. Palma, C. Garrido, F. Sánchez, A. Quesada, 2003
(cid:132) Capítulo 7
(cid:132) Principles of Concurrent and Distributed Programming
(cid:132) M. Ben-Ari. Prentice Hall, 1990
(cid:132) Capítulo 7
(cid:132) Sistemas Operativos
(cid:132) A. Silberschatz, P. Galvin. Addison Wesley Longman, 1999
(cid:132) Capítulo 4.6
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
2
Sistemas de paso de mensajes
(cid:132) Los semáforos, monitores, regiones
críticas, etc. son todas herramientas
que se basan en la existencia de
memoria compartida.
(cid:132) El modelo de memoria compartida es
difícil o imposible de trasladar a un
sistema distribuido, en el que no existe
físicamente compartición de memoria.
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
3
Sistemas de paso de mensajes
(2)
(cid:132) Como alternativa al modelo de memoria
compartida, se define el modelo de
paso de mensajes:
(cid:132) los procesos no comparten memoria
(variables, objetos, etc.)
(cid:132) la comunicación se hace mediante
operaciones explícitas de envío y recepción
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
4
Modelo general
Emisor
mensaje
CANAL
Receptor
enviar
recibir
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
5
Ventajas del paso de
mensajes
(cid:132) Válido para cualquier arquitectura de
computadores
(cid:132) sistemas distribuidos
(cid:132) arquitecturas paralelas sin memoria compartida
(cid:132) también en sistemas de memoria compartida
(cid:132) No existe el problema universal del acceso en
exclusión mutua a datos compartidos.
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
6
Memoria Compartida OR/XOR
Paso de Mensajes
(cid:132) Ambos esquemas de comunicación NO
son mutuamente exclusivos
(cid:132) Podrían utilizarse simultáneamente
dentro de un mismo SO o lenguaje, o
incluso dentro de un mismo proceso
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
7
Aspectos de diseño
(cid:132) Sincronización entre emisor y receptor
(cid:132) Comunicación síncrona/asíncrona
(cid:132) Identificación en el proceso de comunicación
(cid:132) Comunicación directa/indirecta
(cid:132) Comunicación simétrica/asimétrica
(cid:132) Características del canal
(cid:132) Capacidad, uni/bidireccional, etc...
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
8
Aspectos de diseño
(cid:132) Identificación en el proceso de
comunicación
(cid:132) nombrado, denominación,
direccionamiento
(cid:132) Sincronización
(cid:132) Características del canal
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
9
Identificación
(cid:132) Comunicación directa
(cid:132) Cada proceso que desea comunicarse debe
nombrar explícitamente el destinatario o el
remitente de la comunicación
(cid:132) enviar(P, mensaje)
(cid:132) Enviar un mensaje al proceso P
(cid:132) recibir(Q, mensaje)
(cid:132) Recibir un mensaje del proceso Q
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
10
Identificación
(cid:132) Comunicación indirecta
(cid:132) Con la comunicación indirecta, los
mensajes se envían a, y se reciben de,
buzones (también llamados puertos)
(cid:132) enviar(A, mensaje)
(cid:132) Enviar un mensaje al buzón A
(cid:132) recibir(A, mensaje)
(cid:132) Recibir un mensaje del buzón A
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
11
Identificación
(cid:132) Ventajas/Desventajas
(cid:132) Cambio identificación
(cid:132) Mensajes distinta naturaleza
(cid:132) Aplicaciones cliente/servidor
(cid:132) Identificación en sistemas distribuidos
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
12
Identificación
(cid:132) Comunicación simétrica
(cid:132) Los procesos tanto receptor como emisor
necesitan nombrar al otro para
comunicarse
(cid:132) Comunicación asimétrica
(cid:132) Sólo el emisor nombra al destinatario
(cid:132) Resuelve el problema en aplicaciones
cliente/servidor
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
13
Sincronización
(cid:132) Com. síncrona. El intercambio de un
mensaje es una operación atómica que exige
la participación simultánea del emisor y el
receptor (rendezvous)
(cid:132) Extended rendezvous, Encuentro extendido o
Invocación remota
(cid:132) Com. asíncrona. El emisor puede enviar un
mensaje sin bloquearse; el receptor lo puede
recoger más tarde.
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
14
Repercusiones de la
comunicación asíncrona
(cid:132) El emisor puede enviar varios mensajes:
(cid:132) necesidad de disponer de búferes
(cid:132) ¿Cuándo sabe el emisor que su mensaje
ha llegado/se ha atendido?
(cid:132) conveniencia de operaciones de “acuse de
recibo” o de respuesta
(send (cid:198) receive (cid:198) send_reply (cid:198)
receive_reply)
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
15
Llamadas bloqueantes / no
bloqueantes
(cid:132) Las operaciones de envío y recepción
pueden estar definidas como
bloqueantes o no bloqueantes
(cid:132) Un envío/recepción con bloqueo es un
ejemplo de comunicación síncrona
(cid:132) Un envió/recepción sin bloqueo es un
ejemplo de comunicación asíncrona
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
16
Ejemplos
(cid:132) Comunicación directa simétrica
(cid:132) Enviar(P,mensaje)/Recibir(Q,mensaje)
(cid:132) Comunicación directa asimétrica
(cid:132) Enviar(P,mensaje)/Recibir(mensaje)
(cid:132) Enviar(P,mensaje)/Recibir(id,mensaje)
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
17
Características del canal
(cid:132) Punto a punto, multipunto
(cid:132) Unidireccional, bidireccional
(cid:132) Capacidad del canal
(cid:132) cero
(cid:132) limitada
(cid:132) infinita (teórico)
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
18
Características del canal
(cid:132) Flujo de datos
(cid:132) Enlaces unidireccionales (síncrona) o
bidireccionales (síncrona o asincrona)
(cid:132) Capacidad del canal
(cid:132) cero, limitada, infinita (teórico)
(cid:132) Tamaño de los mensajes
(cid:132) Longitud fija o variable
(cid:132) Canales con tipo o sin tipo
(cid:132) Paso por copia o por referencia
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
19
Características del canal de
comunicación: ejemplos
(cid:132) Comunicación directa
(cid:132) Se establece automáticamente
(cid:132) Un canal se asocia a exactamente dos
procesos
(cid:132) Entre cada par de procesos sólo existe un
canal
(cid:132) El enlace puede ser unidireccional, pero
suele ser bidireccional
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
20
Características del canal de
comunicación: ejemplos
(cid:132) Comunicación indirecta
(cid:132) Se establece un canal entre un par de procesos
sólo si tienen un buzón compartido
(cid:132) Un canal puede estar asociado a más de dos
procesos
(cid:132) Entre cada par de procesos en comunicación
puede haber varios enlaces distintos, cada un de
los cuales corresponderá a un buzón
(cid:132) Los enlaces pueden ser unidireccionales o
bidireccionales
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
21
Condiciones de error
(cid:132) 1 máquina => los mensajes se implementan
(generalmente) en memoria compartida
(cid:132) Fallo => falla todo el sistema
(cid:132) Entornos distribuidos => procesos residen en
diferentes máquinas
(cid:132) Los mensajes se transfieren por líneas de comunicación
(cid:132) La probabilidad de que ocurra un error durante la
comunicación y el procesamiento es mucho mayor que en un
entorno de una sola máquina
(cid:132) El fallo de un enlace no causa necesariamente el fallo de todo
el sistema
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
22
Condiciones de error
(cid:132) Cuando ocurre un fallo en un sistema, sea
centralizado o distribuido, el sistema debe
intentar recuperarse del error
(cid:132) Algunas situaciones de error:
(cid:132) El emisor o el receptor podría terminar antes de
que se procese un mensaje
(cid:132) P espera un mensaje de Q (proceso terminado)
(cid:132) P envía un mensaje a Q (proceso terminado)
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
23
Condiciones de error
(cid:132) Mensajes perdidos
(cid:132) Fallo hardwareo de la línea de comunicación
(cid:132) Tres métodos para enfrentar este suceso
en función de quien asume la
responsabilidad de detectar el fallo:
(cid:132) SO
(cid:132) Emisor
(cid:132) SO/Emisor
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
24
Condiciones de error
(cid:132) No siempre es necesario detectar los
mensajes perdidos => protocolos de red
que garantizan la confiabilidad
(cid:132) ¿Cómo detectar la pérdida de mensajes?
(cid:132) El método de detección más común consiste
en emplear tiempos límiteo plazos
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
25
Condiciones de error
(cid:132) Mensajes alterados
(cid:132) es común el uso de códigos de verificación
de errores (paridad, etc...)
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
26
Ejercicio
(cid:132) Supongamos que partimos de un sistema de
comunicación mediante paso de mensaje
donde la comunicación es directa y sincrona:
(cid:132) enviar(A,mensaje)
(cid:132) recibir(B,mensaje)
(cid:132) Implementar el problema
Comentarios de: Tema3. Paso de Mensajes (0)
No hay comentarios