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 solicitudrespuesta). 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 protocolo de transporte y rutinas para ensamblar datos a transferir) que permite que los programas llamen a procedimientos en otras máquinas, de manera transparente Requiere rutinas de emulación (Stubs) en cliente y el servidor, procesos de empaquetamiento (marshall) y desempaquetamiento (unmarshall) de parámetros y resultado 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-enviarrestituir (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 call read SERVIDOR B STUB Call STUB A read C E return return D 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 cálculos huérfanos Carlos Figueira/USB 33 Interfaces de Comunicación: socket ● Librería de sockets Carlos Figueira/USB 34 Interfaces de Comunicación: socket Carlos Figueira/USB 35 Interfaces de Comunicación: MPI Carlos Figueira/USB 36 Comunicación en grupo ● ● Un mensaje puede ser enviado a múltiples receptores en una sola operación Grupo: colección de procesos que actúan juntos en algún sistema o forma especificada por usario ● ● Son dinámicos R Implementación depende del hardware R S R Carlos Figueira/USB R R 37 Comunicación en grupo ● Se requieren mecanismos par administrar grupos y miembros de grupos ● ● ● Se utilizan direcciones especiales para Difusión y Multipunto Alternativa: transmitir mensajes por separado Es útil para construir sistemas ● Tolerantes a fallas en servidores replicados ● Localizar objetos en servicios distribuidos ● Mejor desempeño a través de datos replicados ● Actualización múltiple Carlos Figueira/USB 38 Comunicación en grupo: aspectos de diseño ● Grupos cerrados vs Grupos abiertos ● Grupos jerárquicos vs Grupos de amigos ● Miembros del grupo ● Direccionamiento de grupos ● Primitivas send y receive ● Atomicidad ● Ordenamiento de mensajes ● Solapamiento de grupos Carlos Figueira/USB 39