Actualizado el 21 de Marzo del 2018 (Publicado el 23 de Febrero del 2018)
1.033 visualizaciones desde el 23 de Febrero del 2018
53,2 KB
5 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.
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
3
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
4
Modelo general
Emisor
mensaje
CANAL
Receptor
enviar
recibir
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
5
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
6
1
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
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
7
© 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
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
9
© 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
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
11
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
12
2
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
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
13
© 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)
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
15
© 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)
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
17
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
18
3
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
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
19
© 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
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
21
© 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)
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
23
© José Miguel Santos Espino – Alexis Quesada Arencibia
ProgramaciónConcurrente
24
4
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
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
25
© 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 del
pro
Comentarios de: Tema3. Paso de Mensajes (0)
No hay comentarios