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.