PDF de programación - Comunicación en Sistemas Distribuidos - Sistemas de Operación II

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

Comunicación en Sistemas Distribuidos - Sistemas de Operación IIgráfica de visualizaciones

Publicado el 9 de Mayo del 2019
476 visualizaciones desde el 9 de Mayo del 2019
823,7 KB
39 paginas
Creado hace 11a (23/04/2013)
Sistemas de Operación II

Comunicación en Sistemas

Distribuidos

Prof. Carlos Figueira

Basado en material de
Yudith Cardinale (USB)

Andrew Tanembaum y Marteen van Steen

Contenido

● Protocolos de Comunicación
● Propiedades Fundamentales de los Protocolos
● Tipos de Protocolos de Transporte
● Construcción de Bloques para la Comunicación
● Modelo Cliente-Servidor (Operaciones

Remotas)

● RPC (Remote Procedure Call)
● Comunicación en grupo

Carlos Figueira/USB

2

Protocolos de Comunicación

● Comunicación en Sistemas Distribuidos: pase

de mensajes
● memoria distribuida, múltiples elementos que

pueden fallar independientemente

● Funciones de mecanismos de comunicación:

● Permitir com. entre procesos en máquinas diferentes
● Protección contra fallas
● Soporte para estructurar modularmente aplic. distr.
● Esconde distinción entre comunicación remota y
local, permite reconfiguración estática y dinámica

Carlos Figueira/USB

3

Protocolos de comunicación

● Especificación de mecanismos de

comunicación. Ejemplos
● Modelo OSI de ISO. Marco para definir estándares
de comunicación de computadores heterogéneos.

● Modelo ATM (Asynchronous Transfer Mode)

● Especifica la forma como debe desarrollarse la
comunicación (formato, contenido y significado
de los mensajes intercambiados)

Carlos Figueira/USB

4

Protocolos en capas (OSI)

Carlos Figueira/USB

5

Protocolos por capas

● Aplicación (ftp, correo-e, ssh)
● Presentación (tipología del mensaje)
● Sesión (facilidades de sincronización)
● Transporte (TCP, UDP)
● Red (X.25, IP, ATM)
● Enlace de datos (control de errores, IEEE 802)
● Físico (RS-232, 802.3)

Carlos Figueira/USB

6

Componentes de mensaje

Carlos Figueira/USB

7

Propiedades fundamentales de los

protocolos

● Las redes pueden fallar, los mensajes se

pierden

● Si un mensaje se pierde, se puede corregir
retransmitiéndolo (necesita temporizadores,
confirmación del receptor)

● Si todos los mensajes se pierden ...

Carlos Figueira/USB

8

Protocolos: fallas del servidor

● Si el cliente no recibe respuesta, reenvía

solicitud

● El servidor puede recordar por donde iba
● Si no recuerda, puede realizarlo dos veces!
● ¿Qué debemos hacer, solicitar otra vez o no?

● Tipos de protocolo:

● Entregan mensaje “al menos una vez”
● Entregan mensaje “a lo sumo una vez”

Carlos Figueira/USB

9

Protocolos “al menos una vez”

● Si no hay falla, entregan mensaje una sola vez
● Ante fallas, pueden entregar un mensaje más

de una vez (por retransmisión)

● Se usan cuando la operación es idem-potente

(realizarla una vez o varias da el mismo
resultado)

● Esconden fallas de comunicación y servidores
● Ejemplo: NFS

Carlos Figueira/USB

10

Protocolos “a lo sumo una vez”

● Detectan si la red o el servidor fallan y lo reportan.
● Operan en un contexto de sesión – una asociación

entre dos procesos durante la cual ambos mantienen
el estado del protocolo.

● Cuando se pierde el estado del protocolo, se termina la

sesión.

● No se reciben mensajes en una sesión diferente a la

sesión en la que se envió.

● Las sesiones tienen identificadores únicos: etiqueta de

tiempo (timestamps), número aleatorio (nonce)

Carlos Figueira/USB

11

Tipos de protocolos de transporte

● Un único protocolo de comunicación no es

suficiente para la diversidad de aplicaciones.

● Cuatro clases:

● Operaciones remotas (cliente-servidor, o solicitud-

respuesta). Ej: RPC, RMI

● Protocolos de transferencia de datos en masa. Ej:

protocolos de transferencia de archivos

● Comunicación uno a muchos: difusión (broadcast),

comunicación multi-puntos (multicast)

● Comunicación de medios continuos (streaming)

Carlos Figueira/USB

12

Heterogeneidad

● Los protocolos deben tomar en cuenta que las
máquinas pueden tener diferentes arquitecturas
● Se requiere traducir estructuras de datos de una
máquina a representaciones independientes de
la máquina (universales)

● El emisor traduce a representación universal; el
receptor traduce de ésta a su esquema propio.
Si máquinas son iguales, puede omitirse.

● Puede negociarse antes de transmitir, o enviar

datos junto con id. de arquitectura

Carlos Figueira/USB

13

Operaciones remotas

● Forma más básica y utilizada en sistemas

distribuidos. Se hace una solicitud (desde el
cliente) y se recibe la respuesta (desde el
servidor)
● Ejemplos:

● RPC: llamada a procedimientos remotos
● RMI: Invocación de métodos remotos

Carlos Figueira/USB

14

Diseño primitivas de comunicación

● Bloqueantes (síncronas) vs. no bloqueantes

(asíncronas)

● Bloqueante: el proceso emisor se bloquea
hasta que el receptor ejecuta primitiva de
recepción. Idem para el receptor

● No bloqueante: el emisor continúa una vez que

el núcleo copia mensaje a su espacio.

Carlos Figueira/USB

15

Diseño primitivas de comunicación

● Bloqueante:

● Ventajas: programación más sencilla
● Desventajas: bloqueo, no aprovecha paralelismo

● No bloqueante:

● Ventajas: paralelismo ejecución/transmisión
● Desventajas: programador debe verificar si mensaje

ha llegado (receptor) o ha sido enviado por núcleo
(emisor)

● Primitivas: wait, test, conditional-receive (espera un

tiempo o falla), interrupción
Carlos Figueira/USB

16

Diseño primitivas de comunicación

● ¿Cómo resolver el problema de la pérdida de

mensajes?. ¿Qué garantía tiene un proceso de
que el mensaje fue entregado?

● Primitivas confiables vs. no confiables. Cuatro

enfoques:
● Send no confiable. Es responsabilidad del usuario
● ACK (confirmaciones) a nivel de núcleo entre emisor

y receptor

● Un ACK sólo
● Temporizadores: para retransmitir, para enviar ACK

Carlos Figueira/USB

17

Llamada a procedimiento remoto

● Consiste en protocolo de comunicación (usa
rutinas para
protocolo de
ensamblar datos a transferir) que permite que
los programas llamen a procedimientos en
otras máquinas, de manera transparente

transporte y



y

● Requiere rutinas de emulación (Stubs) en
de
y
de

cliente
el
empaquetamiento
desempaquetamiento
parámetros y resultado

(marshall)
(unmarshall)

servidor,

procesos

Carlos Figueira/USB

18

Ej. count = read (fd, buf, nbytes)

Carlos Figueira/USB

19

Extremos (stubs) cliente/servidor

Carlos Figueira/USB

20

Secuencia RPC

● El procedimiento en el cliente llama al extremo

cliente de la manera usual

● El extremo cliente construye un mensaje y

llama al SO local

● El SO del cliente envía mensaje al SO remoto
● El SO remoto entrega mensaje al extremo

servidor

● El extremo servidor desempaca parámetros y

llama al servidor

Carlos Figueira/USB

21

Secuencia RPC

● (cont.) El servidor realiza la operación y retorna

resultado al extremo servidor

● El extremo servidor lo empaca en un mensaje y

llama al SO local

● El SO del servidor envía mensaje al SO del cliente
● SO de cliente entrega mensaje a extremo cliente
● El extremo cliente desempaca el resultado y

retorna al procedimiento cliente

Carlos Figueira/USB

22

Heterogeneidad: big vs. little endian

Carlos Figueira/USB

23

Pase de parámetros RPC

● Por valor, no hay problema
● Por referencia: prohibirlas o copiar-enviar-
restituir (se sustituye copia local por copia
recibida desde servidor)

● Apuntadores a estructuras complejas: pasar
estructura completa, o pasar datos a medida
que servidor requiera

● Tipos definidos por el usuario: descomponer en

tipos básicos

Carlos Figueira/USB

24

Soporte de RPC

● Procesamiento de interfaz: integrar

mecanismos RPC en lenguaje convencional

● Manejo de comunicaciones
● Asociación (binding): localizar servidor

apropiado para un servicio

Carlos Figueira/USB

25

Procesamiento de interfaz

● Existen lenguajes especializados para interfaces: IDL
(Interface Definition Languages). Ej: SUN RPC, DCE

● Ejemplo de una especificación para un servidor de archivos:
# include <header.h>

specification of file_server, version 3.1:
long read(in char name[MAX_PATH], out char
buf[BUF_SIZE], in long bytes, in long position);

Carlos Figueira/USB

26

Compilador de IDL

● Genera un procedimiento extremo cliente para

cada procedimiento especificado en interfaz

● Genera procedimiento extremo servidor
● Genera operaciones de empaquetamiento y

desempaquetamiento en cada extremo

● Provee esqueleto de servicio, el cuerpo es

desarrollado por programador

Carlos Figueira/USB

27

Carlos Figueira/USB

28

Asociación en RPC

● Especifica cómo se establece relación entre

procedimiento remoto y el que lo llama

● Se forma cuando dos aplicaciones han hecho

conexión lógica y están preparadas para
intercambiar comandos y datos

● El servidor se registra con el conector con su

interfaz (nombre, parámetros, versión, etc.)

● El conector está en un puerto conocido

Carlos Figueira/USB

29

RPC: Semántica ante fallas

CLIENTE

SERVIDOR

call read


STUB
A

E
return

B
STUB
Call

D
return

read

C

return

kernel

kernel


RED

Carlos Figueira/USB

30

RPC: Semántica ante fallas

● Cliente no puede localizar servidor (reporta

falla)

● Mensaje solicitud se pierde: Expira

temporizador antes que llegue respuesta o
ACK
● Núcleo retransmite hasta que haya confirmación (al

menos una vez)

● Núcleo reporta falla (a lo sumo una vez)

Carlos Figueira/USB

31

RPC: Semántica ante fallas

● Se pierde respuesta:

● Expira temporizador y no se recibe ACK (en

servidor). Se retransmite ACK

● ¿Se perdió el mensaje o es lento el servidor? Si la

operación no es idem-potente, puede traer
problema (ej. Transacción bancaria)

● Solución: enumerar mensajes

Carlos Figueira/USB

32

RPC: Semántica ante fallas

● Se cae el servidor (en B, C o D)

● El cliente no recibe respuesta, retransmite solicitud
● En casos 1 (B) y 3 (D, se reenvía respuesta) no hay

problema

● En caso 2 (C), puede haber problemas si servidor

no puede recuperar (rollback)

● Se cae el cliente: se pierden las respuestas, se

deben manejar los
  • Links de descarga
http://lwp-l.com/pdf15889

Comentarios de: Comunicación en Sistemas Distribuidos - Sistemas de Operación II (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