PDF de programación - Comunicación en Sistemas Distribuidos - Sistemas Operativos Distribuidos

Imágen de pdf Comunicación en Sistemas Distribuidos - Sistemas Operativos Distribuidos

Comunicación en Sistemas Distribuidos - Sistemas Operativos Distribuidosgráfica de visualizaciones

Publicado el 10 de Mayo del 2019
822 visualizaciones desde el 10 de Mayo del 2019
776,7 KB
36 paginas
Creado hace 12a (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
  • Links de descarga
http://lwp-l.com/pdf15898

Comentarios de: Comunicación en Sistemas Distribuidos - Sistemas Operativos Distribuidos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad