Sistemas Distribuidos
Gerson Villa G.
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
Agenda
 Introducción a Sistemas Distribuidos
 Comunicaciones
 Procesos y Migración
 Naming
 Sincronización de procesos distribuidos
 Replicación
 Sistemas de archivos distribuidos
 Actualidad
Aspectos Administrativos
 Evaluación, tareas, porcentajes, demases
Bibliografía
 A.Tanenbaum, M.Van Steen. Distributed
Systems, principles and paradigms. Ed.
Prentice Hall, 2002.
 G.Coulouris, J.Dillmore, T.Kindberg.
Distributed Systems - Concept and
Design. Addison-Wesley, Third Edition,
2001.
Introducción
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 ...
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)
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
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
Ventajas de distribuir sistemas
 Economía
 Aumento en capacidad de procesamiento.
 Aplicaciones inherentemente distribuidas.
 Capacidad de crecimiento.
 Fiabilidad y disponibilidad.
 Compartir recursos y datos.
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
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.
Desafíos de los Sistemas Distribuidos
 Compartir Recursos
 Transparencia
 Usabilidad (abierto)
 Escalabilidad
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
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…
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.
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.
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
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.
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.
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
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
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
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
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
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
Software
 Se encuentran tres variantes de
plataformas de software para sistemas
distribuidos
 Sistemas operativos distribuidos
 Sistemas operativos de Red
 Middle-ware
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
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.
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
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
False Sharing
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.
Ejemplo: Antiguos terminales UNIX
Independencia de uso de servicios
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
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
Organizaciones típicas
 Cliente-Servidor
 2 (o más) capas
 Arquitecturas Modernas
Cliente-Servidor
Multicapas
Arquitecturas Modernas

Introduccion SD

  • 1.
  • 2.
    Objetivos  Entender losconceptos 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 aSistemas Distribuidos  Comunicaciones  Procesos y Migración  Naming  Sincronización de procesos distribuidos  Replicación  Sistemas de archivos distribuidos  Actualidad
  • 4.
    Aspectos Administrativos  Evaluación,tareas, porcentajes, demases
  • 5.
    Bibliografía  A.Tanenbaum, M.VanSteen. Distributed Systems, principles and paradigms. Ed. Prentice Hall, 2002.  G.Coulouris, J.Dillmore, T.Kindberg. Distributed Systems - Concept and Design. Addison-Wesley, Third Edition, 2001.
  • 6.
  • 7.
    Evolución de lossistemas  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 SistemaDistribuido 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 sistemasdistribuidos  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 sistemasdistribuidos  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 distribuirsistemas  Economía  Aumento en capacidad de procesamiento.  Aplicaciones inherentemente distribuidas.  Capacidad de crecimiento.  Fiabilidad y disponibilidad.  Compartir recursos y datos.
  • 12.
    Desventajas de distribuirsistemas  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 distribuirlos 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 losSistemas Distribuidos  Compartir Recursos  Transparencia  Usabilidad (abierto)  Escalabilidad
  • 15.
    Compartir recursos  Elobjetivo 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 elhecho 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  Escondelas 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  Escondeel 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  Escondeel 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  Elusuario 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 transparenciatiene 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 recursosy 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 refierea 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 formageneral 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 PP 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 losCPU 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 subdividenen 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 encuentrantres 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
  • 33.
  • 34.
    Sistemas Operativos deRed  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.
  • 35.
  • 36.
  • 37.
    Middle-Ware  Capa desoftware 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
  • 39.
    Organizaciones típicas  Cliente-Servidor 2 (o más) capas  Arquitecturas Modernas
  • 40.
  • 41.
  • 42.