Contenido
Comunicación de procesos a través del paso
de mensajes en sistemas distribuidos
Nominación: características y estructuras,
tipos de nombres
Sincronización: relojes físicos, relojes lógicos, usos de la sincronización
Comunicación Cliente Servidor, RPC,
Multicast y tolerancia a fallos
Bibliografía
Distributed Systems: Concepts and Design
G. Coulouris, J. Dollimore, T. Kindberg
Addison-Wesley, 2001
Distributed Operating Systems
A. S. Tanenbaum
Prentice-Hall, 1995
Distributed Operating Systems: Concepts & Practice
D. L. Galli
Prentice-Hall, 2000
Distributed Operating Systems & Algorithms
R. Chow, T. Johnson
Addison-Wesley, 1997
Traducciones al Español
Sistemas Distribuidos: Conceptos y Diseño
G. Coulouris, J. Dollimore, T. Kindberg
Addison-Wesley, 2001
Sistemas Operativos Distribuidos
A. S. Tanenbaum
Prentice-Hall, 1996
Introducción
Estudiaremos el nivel inferior de la Lógica de Mediación (middleware)
Discutiremos el uso de TCP-UDP/IP desde el punto de vista del programador.
Las entidades que se comunican son procesos
sus papeles determinan cómo se comunican
es decir, sus patrones de comunicación
2 patrones de comunicación principales:
Comunicación cliente-servidor
Comunicación en grupo
Hay que diseñar protocolos de alto nivel que soporten dichos patrones
Objetivos
Desarrollar bloques constructivos para la IPC:
Cómo meter los datos en los mensajes
Cómo pasar los mensajes:
Qué semántica emplear
Transparencia, sincronismo, fiabilidad
Construir protocolos a la medida
de los papeles de los procesos
de los patrones de comunicación
Comunicación cliente-servidor
Protocolos solicitud-respuesta
Tener en cuenta los papeles de los procesos
Qué primitivas de comunicación usar
Objetivos
Presentar la interfaz de sockets BSD para:
TCP. Abstracción: cauce bidireccional (stream)
Información encauzada sin fronteras de mensaje
Uso de buffers: amortiguar diferencias de velocidad
En SD: ftp, http, telnet, smtp
Además: entornos productor-consumidor
UDP. Abstracción: paso de mensajes(datagramas)
Envío de un mensaje auto contenido desde un emisor hacia un receptor
En SD: DNS, NFS, NTP
En la API Java y en UNIX: destino = socket
referencia indirecta a un puerto concreto del receptor
Comunicación
La diferencia más importante entre un sistema distribuido y un sistema de un único procesador es la comunicación entre procesos [25, Tanenbaum].
En un sistema de un solo procesador la comunicación supone implícitamente la existencia de la memoria compartida:
Ej.: problema de los productores y los consumidores, donde un proceso escribe en un buffer compartido y otro proceso lee de él.
En un sistema distribuido no existe la memoria compartida y por ello toda la naturaleza de la comunicación entre procesos debe replantearse. Los procesos, para comunicarse, deben apegarse a reglas conocidas como protocolos.
Para los sistemas distribuidos en un área amplia, estos protocolos toman frecuentemente la forma de varias capas y cada capa tiene sus propias metas y reglas.
Los mensajes se intercambian de diversas formas, existiendo muchas opciones de diseño al respecto; una importante opción es la llamada a un procedimiento remoto.
También es importante considerar las posibilidades de comunicación entre grupos de procesos, no solo entre dos procesos.
Protocolos basados en niveles
Debido a la ausencia de memoria compartida, toda la comunicación en los sistemas distribuidos se basa en la transferencia de mensajes
Cuando el proceso A quiere comunicarse con el proceso B:
Construye un mensaje en su propio espacio de direcciones.
Ejecuta una llamada al sistema para que el S. O. busque el mensaje y lo envíe a través de la red hacia B.
Para evitar el caos, A y B deben coincidir en el significado de los bits que se envíen.
Los puntos de acuerdo necesarios incluyen lo siguiente:
¿Cuántos voltios hay que utilizar para un bit 0 y cuántos para un bit 1?.
¿Cómo sabe el receptor cuál es el último bit del mensaje?.
¿Cómo puede detectar si un mensaje ha sido dañado o perdido, y qué debe hacer si lo descubre?.
¿Qué longitud tienen los números, cadenas y otros elementos de datos y cuál es la forma en que están representados?.
El modelo ISO/OSI
La ISO (Organización Internacional de Estándares) desarrolló un modelo de referencia
Identifica en forma clara los distintos niveles.
Estandariza los nombres de los niveles.
Señala cuál nivel debe realizar cuál trabajo.
Este modelo se denomina modelo de referencia para interconexión de sistemas abiertos (ISO OSI o modelo OSI) [26, Tanenbaum].
El modelo OSI está diseñado para permitir la comunicación de los sistemas abiertos:
Son aquellos preparados para comunicarse con cualquier otro sistema abierto mediante reglas estándar:
Establecen el formato, contenido y significado de los mensajes recibidos y enviados.
Constituyen los protocolos, que son acuerdos en la forma en que debe desarrollarse la comunicación
Página siguiente |