Escolar Documentos
Profissional Documentos
Cultura Documentos
Unidad 2
Contenido
Comunicacin de procesos a travs del paso
de mensajes en sistemas distribuidos
Comunicacin Cliente Servidor, RPC,
Multicast y tolerancia a fallos
Nominacin: caractersticas y estructuras,
tipos de nombres
Sincronizacin: relojes fsicos, relojes
lgicos, usos de la sincronizacin
Bibliografa
Distributed Systems: Concepts and Design
G. Coulouris, J. Dollimore, T. Kindberg
Addison-Wesley, 2001
Traducciones al Espaol
Sistemas Distribuidos: Conceptos y Diseo
G. Coulouris, J. Dollimore, T. Kindberg
Addison-Wesley, 2001
Introduccin
Estudiaremos el nivel inferior de la Lgica de Mediacin (middleware)
Objetivos
Desarrollar bloques constructivos para la IPC:
Cmo meter los datos en los mensajes
Cmo pasar los mensajes:
Qu semntica emplear
Transparencia, sincronismo, fiabilidad
Comunicacin cliente-servidor
Protocolos solicitud-respuesta
Tener en cuenta los papeles de los procesos
Qu primitivas de comunicacin usar
Objetivos
Presentar la interfaz de sockets BSD para:
TCP. Abstraccin: cauce bidireccional (stream)
Comunicacin
La diferencia ms importante entre un sistema distribuido y un sistema de
un nico procesador es la comunicacin entre procesos [25, Tanenbaum].
En un sistema de un solo procesador la comunicacin supone
implcitamente 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.
El modelo ISO/OSI
La ISO (Organizacin Internacional de Estndares) desarroll un
modelo de referencia
DATAGRAMA EN CAPA 3
Protocolos de transporte
Objetivo: Asegurar la fiabilidad de las comunicaciones
Los mensajes enviados desde las aplicaciones (o desde los niveles superiores
del modelo OSI), son divididos en paquetes, que sern reensamblados en el
destino.
Los paquetes que no lleguen a su destino, sern retransmitidos.
Ejemplos: TCP, UDP
SEGMENTO EN CAPA 4
Protocolos de middleware
Middleware es software que segn en modelo OSI reside en el
nivel de aplicacin.
Sin embargo, contiene muchos protocolos de propsito general, que podrn ser
empleados por aplicaciones.
Hay multitud de protocolos que soportan gran variedad de servicios. Por ejemplo:
Protocolos de autenticacin
Protocolos de compromiso atmico
Protocolos de gestin de cerrojos distribuidos
Protocolos para proporcionar mecanismos de comunicacin de alto nivel: RPC, RMI, etc.
receive
un proceso recibe el mensaje en el destino
Comunicacin sncrona:
emisor y receptor se sincronizan en cada mensaje
el send y el receive son operaciones bloqueantes
receive bloqueante
En entornos multitarea
pocas desventajas: otras tareas pueden seguir activas
grandes ventajas: tareas receptoras sincronizadas a mensajes
entrantes
el receive no bloqueante parece ms eficiente pero es ms complejo
(interrupciones? no, gracias)
Los servidores pueden esperar indefinidamente, pero en otros casos:
temporizacin (timeout)
Instituto Tecnolgico de Tepic
Los sockets
Mecanismo original de IPC en UNIX: pipes
cauce unidireccional (stream) y sin nombre
enlazan filtros, sin sincronizacin explcita
a travs del que se pueden enviar mensajes, y por medio del cual se pueden recibir mensajes
DatagramSocket:
soporte a los sockets
el constructor que usan los servidores toma:
el nmero de puerto local que se quiere asociar
el constructor que usan los clientes
sin argumentos: elige uno cualquiera que est libre
mtodos adicionales:
send y receive: su argumento es un ejemplar de
DatagramPacket
Instituto Tecnolgico de Tepic
mensaje perdidos
mediante asentimientos y reenvos
control de flujo
evita desbordamiento del receptor
Socket:
soporte a los sockets encauzados
el cliente usa un constructor que:
toma como argumentos el nombre del host y el nmero de
puerto del servidor
crea el socket y
solicita automticamente la conexin
servidor: resultado del accept
mtodos: getInputStream y getOutputStream
retornan valores de tipo InputStream y OutputStream
se pueden usar como argumentos para constructores
de cauces de E/S
ej: DataInputStream y DataOutputStream
La Alineacin y la Representacin
Externa de Datos
La informacin almacenada dentro de los programas en ejecucin se
representa mediante estructuras de datos. La informacin transportada
en los mensajes consiste en secuencias de bytes.
Las estructuras de datos deben ser aplanadas a secuencias de bytes
para su transmisin y reconstruidas en recepcin.
Diferentes formas de representar tipos primitivos: int, float
Ejemplo: variantes en la ordenacin de enteros:
La Alineacin y la Representacin
Externa de Datos
Representacin externa de datos: estndar acordado para la
representacin de estructuras de datos y valores primitivos:
Empaquetado (marshalling): convertir estructuras de datos y datos primitivos en
una representacin externa, aplanada, para ser transmitida.
Desempaquetado (unmarshalling): reconstruir las estructuras de datos y datos
primitivos a partir de una representacin externa.
Variables locales
al main
SP
main()
{
main()
{
:
count = read(fd, bytes, buf)
:
}
Variables locales
al main
bytes
buf
fd
direccin regreso
:
count = read(fd, bytes, buf)
:
}
Variables locales
al main
SP
SP
a) Stack antes llamada read b) Stack durante ejecucin read c) Stack despus llamada read
Instituto Tecnolgico de Tepic
No obstante, las soluciones actuales para objetos distribuidos pueden ser vistas
como una extensin de RPC. Ej: CORBA, JavaRMI (Remote Method
Invocation), .NET Remoting
Mquina Servidor
stub del
cliente
call
cliente
return
Pack
parmetros
Unpack
resultado
stub del
servidor
Unpack call
parmetros
servidor
Pack
resultado return
kernel
kernel
Mquina Servidor
mensaje
:
sum
:
4
n=sum(4,7);
:
7
:
mensaje sum(i,j)
kernel
kernel
sum
4
7
int i,j;
{
return(i+j);
}
Objetos distribuidos
Para invocar a un objeto remoto con transparencia de ubicacin (de forma similar
a RPC):
Ntese que tanto el objeto remoto como el proxy implementarn la misma interfaz.
Referencias a objeto
Una de las diferencias ms importantes entre los sistemas RPC y los
sistemas OO distribuidos consiste en la posibilidad de los sistemas OO de
pasar objetos como argumento en las invocaciones.
Por valor: se copia todo el objeto y el objeto remoto que recibe la invocacin recibe una
copia del objeto.
Por referencia: el objeto remoto recibe una referencia al objeto.
Referencias a objeto
Contenido de las referencias a objeto:
Direccin fsica del ORB que contiene el objeto (por ejemplo: IP + puerto)
Identificador del objeto dentro de la mquina (una mquina puede tener ms de
uno)
Interfaz que se registra (un objeto puede tener ms de una)
Paso de referencias:
Referencias a objeto
Ejemplo de paso de referencias: supongamos que la mquina A
tiene una referencia a O1 y otra a O2. Supongamos que la mquina
B tiene la implementacin de O1 y la mquina C, tiene la
implementacin de O2.
Referencias a objeto
Ejemplo de paso de referencias (cont): Supongamos que la mquina
A invoca al mtodo op1 de O1, pasndole como argumento el objeto
O2. Es decir, La mquina A invoca O1.op1(O2)
Introduccin y
Objetivos a Servicios de Nombres
Introduccin
Necesidad de nombres para:
Objetivos
Conocer el Servicio de Nombres:
lo usan los procesos clientes para obtener losatributos de los recursos a
partir de sus nombres
Estudiar un caso:
DNS: Internet Domain Name System
Instituto Tecnolgico de Tepic
Espacios de nombres
Espacio de nombres: coleccin de nombres vlidos reconocidos por
un SN
Vlido se intentar buscarlo
no necesariamente enlazado
dominio = coleccin de ND
En algunos pases:
divisin organizativa debajo de la geogrfica
No recursiva:
El SN acta como el AU de la navegacin iterativa
Recursiva:
El mecanismo de cache
un tipo:
hay un {tipos} particular para cada base de datos
Concepto de zona
Los datos de nombramiento se dividen en zonas
Cada zona contiene:
los atributos para los ND de un dominio, menos:
los sub-dominios administrados por autoridades de menor nivel
ND y direccin de SN que proveen datos autoritativos para la zona:
versiones que se puede confiar en que son razonablemente actuales
ND de SN que mantienen datos autoritativos para subdominios delegados
y las direcciones de esos SN
(DNS )
Hay 2 tipos de SN que proveen datos autoritativos de cada zona:
a) SN primario: lee directamente el archivo maestro de la zona
b) SN secundario: carga los datos desde un SN primario
esto se llama transferencia de zona
peridicamente, el SS contacta con el SP para comprobar si coinciden
si copia secundaria obsoleta:
el SP enva la ms reciente
El Sistema de Nombres de
Dominio
Todo SN puede conservar en su cache datos de otras zonas
(DNS
)
condicin: avisar al cliente de que no son datos autoritativos
tiempo-de-vida: