Procesos y comunicación
introduccion a la comunicacion entre procesos
importancia en sistemas distribuidos
fundamentos de la comunicación basada en el paso de mensajes
ausencia de necesidad de memoria compartida
cliente
solicita y utiliza servicios en sistemas distribuidos
postura proactiva
interactua a traves de interfaces graficas
inicia, realiza y finaliza operaciones
comunicacion entre procesos
clave en sistemas distribuidos
paradigmas de comunicacion: cliente-servidor, RPC, comunicacion en grupo.
Conceptos fundamentales: aplanamiento de datos, representación uniforme, empaquetamiento, operaciones de send/receive, modo de comunicacion (bloqueante/no bloqueante), abstraccion del paso de mensajes, confiabilidad (TCP vs UDP)
llamada de procedimiento remoto (RPC)
variante del paradigma cliente-servidor
permite llamar a procedimiento en maquinas remotas.
transparencia: la llamada a procedimiento remoto se asemeja a una llamada local.
pasos de operacion: cliente llama al resguardo, este envia mensaje al servidor, servidor procesa y devuelve resultado al resguardo, y este lo entrega al cliente.
interfaz de programacion de aplicaciones
especifica detalles de comunicacion para aplicaciones cliente-servidor
define procedimientos para interactuar con protocolos de comunicacion
ejemplos: BSD socket, Sun’s RPC/XDR, librería PVM, Windows Sockets.
comunicacion orientada a conexion
Requiere establecer una conexión antes del intercambio de datos.
El servidor espera pasivamente hasta que recibe una solicitud del cliente.
Después de accept(), se crea un nuevo socket para la comunicación con el cliente.
El socket original permanece abierto para aceptar nuevas solicitudes.
hilos
tipos de flujo de hilos
unico y multiple
clientes y servidores
llamada a procedimiento multihilo
unidad de codigo mas pequeña
servidores
proporcionan funcionalidades en sistemas distribuidos
posicion reactiva
operan continuamente
pueden arrancar estatica o dinamicamente
componentes clave del middleware
reutilizables y relocalizables
servidores de datos, archivos, impresion, correo, etc.
modelo cliente - servidor
comunicacion uno a uno
cliente: inicia la comunicacion y espera respuesta
servidor: espera pasivamente, realiza el trabajo y devuelve resultados
transferencia de mensajes en el nucleo
caracteristicas del software cliente y servidor
implementacion a traves de librerias PVM o sockets
deficiencias: orientado a E/S, falta de transparencia, responsabilidades del programador en transferencia de mensajes y E/S
Comunicacion en grupo
comunicacion uno a muchos o mucho a muchos
grupos dinamicos
tecnicas de implementacion: transmision de multidifusion, transmision completa, transmision punto a punto.
aspectos de diseño: grupos cerrados, abiertos, de compañeros, jerarquicos
membresia de grupo, direccionamiento, primitivas de comunicacion, atomicidad, ordenamiento de mensajes, escalabilidad.
la interfaz de socket
Un socket es un punto de referencia para enviar o recibir mensajes.
Los procedimientos de la API de sockets realizan llamadas al sistema operativo para operar con sockets.
Funciones principales: socket(), close(), bind(), listen(), accept(), connect(), send(), recv(), sendto(), recvfrom().
comunicacion sin conexion o servicio de datagrama
Similar a enviar una carta postal: cliente envía, servidor recibe.
No se establece una conexión explícita.
Se utilizan las funciones recvfrom() y sendto() para la transmisión de datos.
La dirección del destinatario se especifica en sendto(), y recvfrom() responde a cualquier dato entrante en el puerto enlazado.