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