Publicado el 10 de Mayo del 2019
999 visualizaciones desde el 10 de Mayo del 2019
776,7 KB
36 paginas
Creado hace 13a (20/02/2012)
Sistemas Operativos Distribuidos
Sistemas Operativos Distribuidos
Comunicación en
Comunicación en
Sistemas
Sistemas
Distribuidos
Distribuidos
Índice
Introducción
•
• Paso de mensajes
– Comunicación punto a punto
– Comunicación de grupo
– Sistemas de colas de mensajes (MOM)
• Llamadas a procedimientos remotos (RPC)
•
– Sun/ONC RPC
Invocación de métodos remotos (RMI)
– Java RMI y CORBA
• Servicios web
• SOA
Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández
Sistemas Operativos Distribuidos
2
Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández
Introducción
Paradigmas de comunicación
• Sistema de comunicación: Espina dorsal del SD
• Paradigmas de comunicación
– ¿Qué API de comunicación ofrece SD a las aplicaciones?
• Memoria compartida (¿en SD?) vs. Paso de mensajes
• Adecuación del paradigma a las distintas arquitecturas
– cliente/servidor; editor/subscriptor; P2P
• Grado de acoplamiento del paradigma
– Espacial y temporal
• Patrón de comunicación:
– unidifusión versus multidifusión
• Mensajes persistentes
– SD almacena mensaje hasta que destinatario(s) lo obtenga(n)
• Incluso aunque emisor ya no exista → desacoplamiento temporal
• Paso de mensajes
• Unidifusión de mensajes no persistentes (sockets, MPI,…)
– Comunicación punto a punto
– Comunicación de grupo
– Sistemas de colas de mensajes (Message-oriented middleware)
• Multidifusión de mensajes no persistentes (ISIS, JGroups,…)
• Paso de mensajes persistentes
• Llamadas a procedimientos remotos (RPC) (ONC, DCE,…)
•
Invocación de métodos remotos (RMI)
– Entornos distribuidos basados en objetos (Java RMI, CORBA,…)
• Servicios web
• Memoria compartida (tema 6)
– Distributed Shared Memory
– Espacios de tuplas
Sistemas Operativos Distribuidos
3
Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández
Sistemas Operativos Distribuidos
4
Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández
3-Comunicaciones
1
Sistemas Operativos Distribuidos
Sistemas Distribuidos
Paso de mensajes
Paso de mensajes
Índice
Introducción
•
• Paso de mensajes
– Comunicación punto a punto
– Comunicación de grupo
– Sistemas de colas de mensajes (MOM)
• Llamadas a procedimientos remotos (RPC)
•
– Sun RPC
Invocación de métodos remotos (RMI)
– Java RMI y CORBA
• Servicios web
• SOA
Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández
Sistemas Operativos Distribuidos
6
Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández
Paradigma de paso de mensajes
Primitivas de paso de mensajes
• HW de paso de mensajes → API de paso de mensajes
• Sist. de paso de mensajes: Capa sobre protocolo de transporte
• Si nivel de transporte subyacente (p.e. UDP) no garantiza:
– Recepción correcta, orden, control de flujo, fragmentación, ...
– Debe hacerlo propio s. paso de mensajes si pretende esa garantía
• timeouts, ACKs, detección de duplicados, control de flujo,
fragmentación/compactación de mensajes, etc.
• Ejemplos de alternativas con distintos niveles de funcionalidad
– Básicamente funcionalidad de nivel de transporte: sockets
– Paso de mensajes orientado a la programación paralela: MPI
– Extensión del paso de mensajes de un microkernel a SD: Mach
• Funciones genéricas hipotéticas (con tipos de mensajes):
Envío([IN] dirección, [IN] tam_mens, [IN] mensaje, [IN] tipo_mensaje)
Recepción([IN] dirección, [IN] tipo_mens_esperado, [IN] tam_mens,
[OUT] mensaje, [OUT] tam_real_mens, [OUT] dir_remitente, [OUT] tipo_mens)
• Esquemas con conexión
– Existen además primitivas para conectar y desconectar
– Operaciones de envío y recepción no incluyen direcciones
– Suelen usarse cuando protocolo subyacente orientado a conexión
• P.e. sockets stream sobre TCP
• Alternativas de diseño en aspectos como:
– Direccionamiento: ¿cómo especifica origen/destino de comunicación?
– Especificación del mensaje
– Formatos de representación
– Grado de sincronía (y buffering)
Sistemas Operativos Distribuidos
7
Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández
Sistemas Operativos Distribuidos
8
Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández
3-Comunicaciones
2
Sistemas Operativos Distribuidos
Primitivas de paso de mensajes
Esquemas de direccionamiento
int MPI_Send(void *buf, int count, MPI_Datatype datatype, int dest, int tag,
int MPI_Recv(void *buf, int count, MPI_Datatype, int source, int tag, MPI_Comm comm,
• MPI
MPI_Comm comm)
MPI_Status *status)
• Sockets datagrama
ssize_t sendto(int socket, const void *buffer, size_t length, int flags,
const struct sockaddr *dest_addr, socklen_t dest_len);
ssize_t recvfrom(int socket, void *restrict buffer, size_t length, int flags,
struct sockaddr *restrict address, socklen_t *restrict address_len);
• Mach
mach_msg_return_t mach_msg (msg_header_t *msg, msg_option_t option,
msg_size_t send_size, msg_size_t rcv_size, port_t rcv_name,
msg_timeout_t timeout, port_t notify)
• Usando número de proceso:
• O cualquiera (MPI_ANY_SOURCE): interacción N → 1
– En envío: nº proceso destinatario
– En recepción: nº proceso origen; sólo interacción 1 → 1
– Difícil asignar nº proceso único en entorno de propósito general
• Pero no en aplicación ejecutada en entorno de computación paralela
– MPI: comunicador (≈ ID. grupo procesos) + nº proceso en el grupo
• Usando puertos: buzón asociado a una máquina
– Comunicación entre puertos
– Proceso reserva uso de un puerto de su máquina (bind de sockets)
– Envío: desde puerto origen local a puerto destino especificados
– Recepción: de puerto local; interacción N → 1
– Sockets INET: ID puerto = dir. IP + nº puerto + protocolo (TCP|UDP)
• Usando colas: buzón de carácter global; interacción N → N
– Sistemas de colas de mensajes; desacoplamiento
Sistemas Operativos Distribuidos
9
Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández
Sistemas Operativos Distribuidos
10
Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández
Modos de interacción punto-a-punto
Tipos de mensajes (etiquetas)
nº proceso: 1 → 1
puerto: N → 1
cola: N → N
• Sistema de comunicación puede gestionar tipos de mensajes
– En envío: especifica tipo de mensaje enviado
– Recepción: especifica tipo de mensaje que se quiere recibir
• o usa comodín (MPI_ANY_TAG)
• Múltiples canales sobre una misma comunicación
• Diversas aplicaciones como por ejemplo:
– Establecer prioridades
– En cliente-servidor puede identificar operación a realizar
– En editor-subscriptor como tipo de evento
• Disponible en MPI como parámetro de primitivas
• En Mach es un campo dentro del mensaje a enviar
– Mach usa formato mensaje con campos de control además de datos
• No soportado en sockets, aunque sí mensajes urgentes (OOB)
Sistemas Operativos Distribuidos
11
Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández
Sistemas Operativos Distribuidos
12
Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández
3-Comunicaciones
3
Sistemas Operativos Distribuidos
Especificación del mensaje
Distintos tipos de envío
• Objetivo: enviar N datos de emisor a receptor
– Minimizando nº de llamadas y copias (ideal: zero copy)
• Alternativas en la especificación del mensaje
– Secuencia de datos: mensaje = dir. buffer + parejas [tipo-valor] (Mach)
• Sistema de comunicaciones gestiona heterogeneidad
• Información de tipos en cuerpo de mensaje → parejas: descriptor-dato
• Dato out-of-line (OOL): mensaje con referencia no dato (reduce copias)
– Vector de bytes: mensaje = dirección buffer + nº bytes (p.e. sockets)
• Sin información de tipos: aplicación debe gestionar heterogeneidad
• Primitivas scatter/gather (readv, writev) para minimizar copias y llamadas
– Vector de datos: mensaje = dir. buffer + tipo de datos + nº datos (MPI)
• Sistema de comunicaciones gestiona heterogeneidad
• Información de tipos como parámetro de primitivas envío/recepción
• Usuario puede definir sus propios tipos que pueden tener huecos
dir
tam
dir
tam
dir
tam
tipo
tipo
tipo
Envío(dest, dir, tam, ...)
Vector de bytes
Envío(dest, dir, tipo, 1, ...)
Vector de datos
dir2
cabecera
tipo OOL
dir
Envío(dest, dir2, ...)
Secuencia de datos
Sistemas Operativos Distribuidos
13
Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández
Sistemas Operativos Distribuidos
14
Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández
Envío múltiple usando vector de bytes
Envío con copia usando vector de bytes
Envío(dest, dir1, tam1, ...)
Envío(dest, dir2, tam2, ...)
Envío(dest, dir3, tam3, ...)
dir1
tam1
dir2
tam2
dir3
tam3
tipo1
tipo2
tipo3
tam
Envío(dest, dir, tam, ...)
dir1
tam1
dir2
tam2
dir3
tam3
dir
tipo1
COPIA
tipo2
tipo3
Sistemas Operativos Distribuidos
15
Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández
Sistemas Operativos Distribuidos
16
Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández
3-Comunicaciones
4
Sistemas Operativos Distribuidos
Envío scatter-gather con vector de bytes
Envío usando v. datos y tipo con huecos
Envío(dest,dir1,tam1,dir2,tam2,dir3,tam3,...)
dir1
tam1
dir2
tam2
dir3
tam3
tipo1
tipo2
tipo3
campo1 tipo1 desp=0
campo2 tipo2 dir2-dir1
campo3 tipo3 dir3-dir1
nuevo_tipo
dir1
tam1
dir2
tam2
dir3
tam3
tipo1
tipo2
tipo3
Envío(dest, dir1, nuevo_tipo, 1, ...)
Sistemas Operativos Distribuidos
17
Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández
Sistemas Operativos Distribuidos
18
Fernando Pérez Costoya ⎯ José Mª Peña Sánchez
Mª de los Santos Pérez Hernández
Envío usando secuencia datos con OOL
Recepción de mensajes
dir
dir1
tam1
dir2
tam2
dir3
tam3
tipo1
tipo2
tipo3
cabecera
tipo1 OOL
dir1
tipo2 OOL
dir2
tipo3 OOL
dir3
Envío(dest, di
Comentarios de: Comunicación en Sistemas Distribuidos - Sistemas Operativos Distribuidos (0)
No hay comentarios