2. Objetivos
Entender los conceptos básicos de
sistemas distribuidos y sus problemáticas.
Aprender el uso de técnicas de diseño de
sistemas en forma distribuida.
Construir sistemas computacionales
básicos en ambientes distribuidos.
Conocer diferentes sistemas distribuidos
de mayor uso
3. Agenda
Introducción a Sistemas Distribuidos
Comunicaciones
Procesos y Migración
Naming
Sincronización de procesos distribuidos
Replicación
Sistemas de archivos distribuidos
Actualidad
7. Evolución de los sistemas
Desarrollos de microprocesadores.
1945 a 1980’s. 1 instrucción/seg. US$ 10.000.000
1980’s hasta hoy. 1.000.000.000 instrucciones/seg.
Menos de US$1.000.
Ganancia precio/rendimiento º 1013.
Desarrollo de redes.
LAN. 10-100 Mbps.
WAN. 64 kpbs - 2 Mbps.
Facilidad de interconexión.
Internet e Intranet.
Alto desarrollo del hardware ...
8. Definiciones
“Un Sistema Distribuido es una colección de
computadores independientes que aparecen ante
los usuarios como un único sistema coherente.”
(Andrew S. Tanenbaum)
“Un sistema en el cual tanto los componentes de
hardware y software de un computador
conectados en red se comunican y coordinan
mediante paso de mensajes.” (G.Coulouris,
J.Dollimore, T.Kindberg)
“Aquel que le impide a uno continuar su trabajo
cuando falla un computador del cual uno nunca
ha oído hablar.” (L.Lamport)
9. Ejemplos de sistemas distribuidos
Red de estaciones de trabajo en una
Universidad
Espacio cuenta es visible desde todos los
computadores
Workflow de manejo automático de
órdenes
Usado por múltiples usuarios, el flujo de las
órdenes es transparente para ellos
10. Ejemplos de sistemas distribuidos
World Wide Web (WWW)
Aparece antes los usuarios como un repositorio
gigantesco de documentos
Factura electrónica en México
Muchos contribuyentes y compradores
Un ente centralizado
Back-office distribuido
11. Ventajas de distribuir sistemas
Economía
Aumento en capacidad de procesamiento.
Aplicaciones inherentemente distribuidas.
Capacidad de crecimiento.
Fiabilidad y disponibilidad.
Compartir recursos y datos.
12. Desventajas de distribuir sistemas
Aumento de la complejidad
Costos de administración
Fallas más frecuentes
Red, Latencia, pérdida de mensajes
Interoperabilidad
Falta de estándares únicos
Seguridad
13. Implicancias de distribuir los sistemas
Concurrencia.
Recursos compartidos. Acceso concurrente.
Sincronización.
Sin tiempo global.
Cada computador tiene su propio reloj local.
Coordinación.
Fallas independientes.
Posibilidad permanente de fallas en cada
componente.
Detección de fallas y tolerancia.
14. Desafíos de los Sistemas Distribuidos
Compartir Recursos
Transparencia
Usabilidad (abierto)
Escalabilidad
15. Compartir recursos
El objetivo básico de los sistemas
distribuidos.
Usuarios deben tener acceso fácil a recursos
compartidos y compartir sus propios recursos
de forma controlada.
Impresoras
Computadores
Espacio de almacenamiento
Archivos, datos, páginas Web, redes, etc.
Porqué compartir recursos ?
Costos, capacidad, escalabilidad
16. Transparencia
Esconder el hecho que los recursos y
procesos están físicamente distribuidos en
diferentes máquinas.
Un sistema distribuido que se presenta
hacia el usuario como una sola máquina se
dice ser transparente.
Sin embargo, transparencia se aplica a
varios aspectos de sistemas distribuidos…
17. Transparencia
Acceso
Esconde las diferencias entre las distintas
representaciones de datos y la formas en que
éstos son accedidos por los usuarios.
Ejemplo: representación de un entero en una
máquina SPARC (big endian) y una INTEL (little
endian)
Ubicación
Esconde la ubicación física de donde está
situado un recurso.
En particular se suele usar nombres lógicos en vez de
direcciones reales. Ejemplo, la URL en el Web.
18. Transparencia
Migración
Esconde el hecho que recursos puedan migrar
de una ubicación física a otra sin afectar el
modo en que se acceda.
Ejemplo: las tareas ;-)
Re-ubicación
Un caso aún más fuerte de migración. Los
recursos son movidos de una ubicación a otra
mientras están en uso y sin que el usuario note
nada.
Un uso típico es para balancear carga.
19. Transparencia
Replicación
Esconde el hecho que un recurso pueda estar replicado
varias veces para mejorar su rendimiento y/o
disponibilidad.
Obviamente exige transparencia de ubicación
Ejemplo: servidor Web de Google
Concurrencia
Esconde el hecho de que distintos usuarios están
“compitiendo” en paralelo por acceder o usar recursos, o
que un recurso está siendo compartido con otros
usuarios
Exige que el sistema se mantenga en un estado coherente.
Ejemplo: bases de datos
20. Transparencia
Fallas
El usuario no nota (inclusive nunca supo) que un
recurso ha dejado de funcionar (o se ha recuperado).
Es uno de los aspectos más duros en sistemas distribuidos
por la dificultad de detectar que un recurso ha muerto.
Ejemplo: arreglos de discos RAID, Google File System.
Persistencia
Esconde si un recurso de software está en disco o en
memoria
Aplicable a distintos sistemas, no sólo distribuidos
Ejemplo: servidores cache, proxy; conexiones persistentes
a bases de datos.
21. Transparencia
La transparencia tiene límites y grados.
No siempre es posible esconder todo
Ejemplo: desfase temporal de comunicación entre
puntos muy distantes (delay).
Siempre hay un trade-off entre transparencia y
rendimiento
Ejemplo: Bases de datos replicadas world-wide. Un
caso particular son los servidores DNS que pueden
tomar días en actualizarse, lo cual no se oculta al
usuario.
22. Usabilidad
Los recursos y servicios son ofrecidos de acuerdo
a reglas estándares describiendo la semántica y
sintaxis.
Usualmente estas reglas son descritas vía
protocolos o interfaces.
HTTP
Interface Definition Languages (IDL)
Web services
Dos aspectos muy relevantes
Completitud
Neutralidad
23. Escalabilidad
Se refiere a la capacidad de crecer de un sistema
La escalabilidad se puede dimensionar desde tres
aspectos
Tamaño: la capacidad de agregar fácilmente más
recursos y usuarios al sistema.
Geográfica: la capacidad de que usuarios y recursos se
encuentren a distancias considerables
Administración: La capacidad de mantener una
administración fácil a pesar del crecimiento
Desafortunadamente los sistemas son escalables
en alguna de las dimensiones sacrificando
rendimiento en las otras
24. Hardware
En forma general todo sistema distribuido
consiste en múltiple CPUs.
Memoria compartida (multi-procesadores)
Todos los CPU comparten el mismo espacio de
direcciones de memoria
Memoria independiente (multi-computadores)
Cada CPU tiene su propio espacio de direcciones de
memoria
Comunicación vía BUS
Canal compartido
Comunicación vía Switch
Canal exclusivo
25. Hardware
M
P
M M
P P P
P P P P
M M M M
P P P P
M M M
P P P P
M M M M
Memoria compartida - BUS
Memoria compartida - Switch
Memoria independiente - BUS
Memoria independiente - Switch
26. Multi-Procesadores
Todos los CPU tienen acceso a una
memoria compartida
Un ejemplo es Symetric Multiprocesing (SMP).
Exige coherencia en el estado de la
memoria.
En la medida que aumentan los CPUs
mantener la coherencia afecta fuertemente el
rendimiento
Es poco escalable y la escalabilidad es cara
27. Multi-computadores
Se subdividen en dos categorías:
Homogéneos
La arquitectura y memoria es igual o similar en todos
los nodos
Generalmente conectados a través de una única,
usualmente de alto rendimiento, interfaz de red.
Ejemplo típico: clusters.
Heterogéneos
Múltiples arquitecturas
Diferentes comunicaciones
Diferentes formas de comunicación
Ejemplo típico: GRID
28. Software
Se encuentran tres variantes de
plataformas de software para sistemas
distribuidos
Sistemas operativos distribuidos
Sistemas operativos de Red
Middle-ware
29. Sistemas Operativos Distribuidos
Sistemas Operativos Monoprocesador
Múltiples procesos compartiendo recursos
sobre una máquina, gracias a un microkernel
que implemente una máquina virtual.
Aplicación
De usuario
Módulo de
memoria
Módulo de
proceso
Módulo de
archivos
Hardware
Micro-kernel
Llamada de
sistema
Llamada de
sistema
Interfaz del
Sistema operativo
Interfaz del
Sistema operativo
No hay intercambio directo entre módulosNo hay intercambio directo entre módulos
Modo
usuario
Modo
kernel
30. Sistemas Operativos Distribuidos
Sistemas Operativos Multiprocesador
Múltiples procesadores compartiendo datos a
través de memoria compartida.
Datos deben ser protegidos para garantizar
consistencia.
Múltiples procesadores deben ser
transparentes para la aplicación.
Primitivas de sincronización: semáforos, locks,
monitores.
31. Sistemas Operativos Distribuidos
Sistemas Operativos Multicomputador
Múltiples computadores conectados por red.
Cada procesador tiene su propia memoria.
Comunicación únicamente a través de paso de
mensajes.
Sincronización basada en semánticas particulares de
paso de mensajes
Aplicaciones distribuidas
Sistema operativo distribuido
Kernel Kernel Kernel
Red
Máquina A Máquina B Máquina C
32. Sistemas Operativos Distribuidos
Sistemas de Memoria Compartida
Distribuida
Múltiples procesadores, cada uno con su memoria.
Memoria compartida virtual sobre multicomputadores.
Problema de false sharing (memoria de dos procesos
en la misma página).
Memoria virtual global
0 2
9
5
CPU 1
1 3
8
6
10
CPU 2
4 7 11
12 14
CPU 3
13 15
CPU 4
0 1 2 3 4 98765 101112131415
memoria
34. Sistemas Operativos de Red
Dos o más computadores conectados por red.
Comparten los diferentes recursos y la
información del sistema mediante la red.
Novell Netware, Personal Netware,Windows NT
Server, UNIX, etc.
Aplicaciones distribuidas
Kernel Kernel Kernel
Red
Máquina A Máquina B Máquina C
Servicios de
Red del S.O.
Servicios de
Red del S.O.
Servicios de
Red del S.O.
37. Middle-Ware
Capa de software que ejecuta sobre el sistema operativo local de
cada computador ofreciendo uno servicios distribuidos.
Abstrae la complejidad y heterogeneidad de los computadores del
sistema
Proporciona una API para la programación y manejo de
aplicaciones distribuidas
Servicios del Middle-Ware
Kernel Kernel Kernel
Red
Máquina A Máquina B Máquina C
Servicios de
Red del S.O.
Servicios de
Red del S.O.
Servicios de
Red del S.O.
Aplicaciones distribuidas
38. Tabla Comparativa
Item S.O. Distribuido S.O. de
Red
Middle-Ware
Multi-proc. Multi-comp.
Grado de
Transparencia
Muy Alto Alto Bajo Alto
Mismo S.O. Sí Sí No No
Copias del
S.O.
1 N N N
Comunicación Memoria
compartida
Mensajes Archivos Específico al
modelo
Manejo de
recursos
Global,
central
Global,
distribuido
Por nodo Por nodo
Escalabilidad No Moderado Si Variable
Usabilidad Cerrada Cerrada Abierta Abierta