Title: Sistemas Distribuidos
1Sistemas Distribuidos
2Antecedentes
- Dos grandes avances tecnológicos en los 80s
- Desarrollo de microprocesadores
- De una máquina de 10 millones de dólares que
ejecuta una instrucción por minuto, se pasa a
máquinas de 1000 dólares que ejecutan 10 millones
de instrucciones por seg.. - Invención de redes
- Posibilidad de conectar uno o más computadoras
entre sí
- Roll Royce de 100 dólares con un billón de
kilómetros por litro - Tamaño manual para abrir puerta 200 pgs.
3Introducción
- Redes de comunicación Permiten conectar decenas,
centenas y todas las máquinas que se requieran
(Internet). - Sistemas Operativos distribuidos que permitan
cooperar y multiplicar la potencia del cálculo.
4Desarrollos conceptuales
1960s
1970s 1980s
Ideas clave
Tiempo Compartido
Estaciones de trabajo
Sistemas abiertos, escalables, tolerantes a
fallas
Computadoras como herramientas personales
Cliente/Servidor
Gráficas
Redes Locales
Redes
Sistema V - Stanford Sun NFS MIT X-11,
Argus CMU Accent, Andrew Mach Amoeba Chrous
MIT CTSS Cambridge TSS Tenex, Unix Sketchpad ARPA
NET
Xerox Dorado Sun 1, Apollo Domain Xerox DFS,
Grapevine Berkeley Unix Newcastle
Connection Cambridge DCS Ethernet, Cambridge Ring
Instituciones pilares
Xerox Alto Lisp machine Apple II Smalltalk Aloha
net
5Sistemas Distribuidos
- Conjunto de computadoras independientes que se
presenta a los usuarios como un sistema único. - Aspectos
- El hardware máquinas autónomas, es decir, que
puedan operar sin la supervisión de ninguna otra. - El software Debe conseguir que los usuarios del
sistema lo vean como una máquina central
convencional única
6Sistemas Distribuidos
- Conjunto de entidades que se comunican entre
ellos a través de mensajes, los cuales son
enviados sobre vías de comunicación. - Entidades
- Procesos, computadoras, redes computadoras,
dispositivos, procesadores etc..
7Otras definicionesA distributed system is one
in which the failure of a computer you didnt
even know existed can render your own computer
unusuableLeslie Lamport A distributed
system is one that stops from getting any work
done when a machine youve never never heard of
crashesDistributed Systems (Ed. Sape
Mullender)edition 1, ACM Press 1989
8Elementos de Sistemas Distribuidos
(1) Procesos reciben, manipulan, transforman y
emiten datos (2) Vías de comunicación medio
sobre el cual circulan los datos y que forman
una red local dotado de propiedades
estructurales y dinámicas.
9Los procesos
- Término introducido por Dijkstra en 1968 para
modelar las relaciones entre diferentes
unidades de ejecución independientes que deben
compartir recursos comunes, (materiales y
lógicos) - En sistemas distribuidos, unidad de
ejecución elemental de un algoritmo
distribuido o paralelo diversas de esas
unidades pueden ejecutarse simultáneamente, y
cada una es indivisible. - Se consideran
procesos secuenciales, (i.e. presentan un flujo
de control único). - Sensibles al paralelismo
de su ambiente
10Las Vías de Comunicación
- Medio a través del cual viajan los mensajes
- Sistema distribuido vías de comunicación
virtuales - Propiedades
- 1. Propiedades estructurales
- 2. Propiedades comportamentales
11Propiedades Estructurales
- Son de naturaleza topológica
- Se refiere a las mallas de comunicación
- Toda topología es posible según el problema
tratado y el - algoritmo distribuido que lo resuelve.
- Estructuras más comunes
- 1. Anillo
- 2. Estrella
- 3. Árbol
- 4. Completo
12Propiedades Comportamentales
Hipótesis sobre comportamiento de las vías de
comunicación. 1. Transmisión se hace sin
duplicación de mensajes 2. Transmisión sin
alteración de mensajes 3. Entre dos procesos el
orden de recepción de mensajes es idéntico a
su orden de emisión no hay desplazamientos 4.
Tiempo espera de un mensaje es finito, (aunque
aleatorio), (no hay perdida de
mensajes). 5. Tiempo atención limitado gt
existe una cota superior si no hay perdida de
mensaje mensaje fue recibido en caso
contrario mensaje recibido o perdido
13Características de los sistemas distribuidos
- Uso de un sistema de comunicación.
- Ausencia de memoria común.
- Sincronización del trabajo.
- Ausencia de un estado global perceptible por un
observador. - Comunicación a través de mensajes.
14Tolerancia a fallas
- Sistema distribuido que puede seguir funcionando,
(tal vez con un menor desempeño), a pesar de que
uno de sus componentes no este funcionando
(sistemas robustos). - Redundancia de hardware
- Recuperación de software
15Confiabilidad
- Datos transmitidos a través de vías de
comunicación - Posibilidad de pérdida y modificación de datos
(Capacidades de recuperación de datos)
16Disponibilidad
- Falla en una sola computadora multiusuario da
como resultado la no disponibilidad del sistema
para todos sus usuarios. - Cuando uno de los componentes falla en un sistema
distribuido solo el trabajo que estaba usando el
componente es afectado. - Un usuario puede moverse a otra estación si la
que usa falla, o un servidor puede
reinicializarse en otra computadora.
17Apertura del sistema
- Sistemas abiertos distribuidos proporcionan un
mecanismo de comunicación de procesos uniforme y
publican interfaces para el acceso a recursos
compartidos. - Pueden ser construidos a partir de software y
hardware heterogeneo.
18Concurrencia
- Varios procesos se encuentran sobre una sola
computadora. - Ejecución intercalada en el caso de un solo
procesador y simultanea si existen n
procesadores. - Ejecución paralela posible debido a
- Varios usuarios invocan comandos o interactuan
con programas de aplicación. - Varios procesos servidores se corren
concurrentemente.
19Escalabilidad
- Sistemas distribuidos deben operar efectiva y
eficientemente en diferentes escalas. - Sistema distribuido práctico más chico dos
estaciones y un servidor de archivos. - Sistemas distribuidos grandes
20Ventajas
- - Relativamente fácil y económico poner en
conjunto sistemas compuestos de un gran número de
procesadores, (CPUs), conectados en red. - - Dos entidades trabajan más rápido que una
sola. - - Necesidad de sincronizar los trabajos de cada
componente
21Objetivos
- Limitaciones geográficas
- Seguridad (En un sistema centralizado existe un
único punto de fallo) - Aumento constante de Potencia de cómputo Si la
potencia del sistema llega a ser insuficiente
(Adquirir un nuevo equipo MainFrame vs Adquirir
computadoras personales)
22Aspectos clave en el Diseño de los Sistemas
Operativos Distribuidos
- Tolerancia a fallas.
- Transparencia a la ocurrencia (El usuario no debe
notar otros usuarios en el sistema). - Transparencia al paralelismo (Asignar los
procesadores a las actividades del programa sin
el concurso del programador). - Fiabilidad (Fiabilidad global del sistema).
23Aspectos clave en el Diseño de los Sistemas
Operativos Distribuidos
- Escalabilidad (Habilitar crecimiento de acuerdo a
la demanda). - Evitar Hw centralizado
- Evitar Sw centralizado
- Ninguna máquina debe tener toda la información de
todo el sistema - No existe un reloj común
24Aspectos Básicos de Diseño de Sistemas
Distribuidos
- Naming
- Comunicación
- Estructura software
- Asignación de carga
- Consistencia
25Naming
- Nombramiento de los diferentes recursos
- Nombres deben de tener significados globales
- Involucra las siguientes consideraciones
- La elección del tamaño del nombre para cada tipo
de recurso, (puede ser finito o potencialmente
infinitio) - Nombres deben de ser mapeados por
identificadores de comunicación - Un nombre depende de su contexto, por lo que para
resolver un nombre es necesario el nombre y un
contexto
26Comunicación
- Componentes separados lógica y físicamente, por
lo que necesitan comunicarse entre ellos para
interactuar - Comunicación involucra las operaciones
siguientes - la transferencia de datos
- la sincronización de la recepción con la emisión
- Dos enfoques en sistemas distribuidos
- paso de mensajes
- llamado de procedimiento remoto
- Existen dos modelos
- modelo de comunicación par a par
- modelo de comunicación grupal
27Estructura software
- Sistemas centralizados son monolíticos
- conjunto abstracciones que se ofrece a las
aplicaciones estan reunidas en una sola interfaz - Sistemas distribuidos
- programas aplicación pueden accesar diferentes
servicios , en el cual cada uno cuenta con su
propia interfaz para accesar recursos - Principales niveles
- aplicaciones
- soporte de lenguaje de programación
- sistema operativo
- hardware
28Asignación carga
- Dado un proceso, en donde se va a ejecutar
- Modelo simple la capacidad de memoria y el
desempeño de un procesador de una estación
determina el tamaño máximo de tarea que se puede
ejecutar - Modelos
- modelo de servidor de estación
- modelo de piscina de procesadores
- modelo de la estación de trabajo
- modelo de memoria compartida distribuida
29Consistencia
- Diferentes procesos accesan y actualizan datos
concurrentemente - Los cambios no son instantaneos
- Un cierto conjunto de cambios debe de aparecer
igual a todos los otros procesos que integran el
sistema distribuido. - Tipos consistencia
- consistencia de actualización
- consistencia de replica
- consistencia de caché
- consistencia de fallas
- consistencia de reloj
- consistencia de interfaz de usuario
30Algoritmos Distribuidos
- Definición abstracción lógica de un sistema
distribuido, se habla de un conjunto de procesos
y de líneas de comunicación virtuales - Se habla de algoritmos concurrentes ejecutados en
diferentes procesadores, - Originalmente los algoritmos eran diseñados para
ejecutarse procesadores distribuidos en un área
grande - Hoy en día incluye algoritmos usados en redes de
área local y multiprocesadores que comparten
memoria
31Atributos que diferencian a los algoritmos
distribuidos
- Método de comunicación entre procesos
- memoria compartida
- mensajes punto a punto y/o broadcast
- ejecución de procesos remotos (RPC)
- El modelo del tiempo
- completamente síncronos
- completamente asíncronos
- parcialmente síncronos
32- El modelo de fallas
- sistema completamente fiable
- sistema tolera algunas fallas
- fallas bizantinas
- Los problemas a los que están dirigidos
- problemas de aplicación
- problemas de control
33Algoritmos distribuidos aplicación
- Son los algoritmos que definen una aplicación
- Representan la interfaz final entre los usuarios
y el sistema distribuido - Se apoyan en arquitecturas de software como
- CORBA Common Object Request Broker Architecture
- COM Component Object Model
- EJB Enterprise JavaBeans
34Algoritmos distribuidos control
- Están por abajo de las aplicaciones
- Proporcionan dos tipos de servicios
- Proveedor de primitivas
- exclusión mutua
- envío/recepción mensajes
- control de concurrencia
- administración de archivos
- Observadores de propiedades
- interbloqueo
- terminación de la ejecución
- recolectores de basura
35Algoritmos de aplicación y control
CTLi control de la i-ésima aplicación Ai
aplicación
36Características algoritmos distribuidos
- Desconocimiento del número de procesos
- Desconocimiento de la topología de la red
- Entradas independientes en sitios diferentes
- Varias programas ejecutandose al mismo tiempo,
empezando en tiempos diferentes y operando a
diferentes velocidades - No determinismo en el procesador (processor
nondeterminism) - Tiempos entrega de mensajes diferentes
- Orden entrega de mensajes desconocido
- Fallas en la comunicación y en los procesos
37Aplicaciones Algoritmos Distribuidos
- Redes de computadoras
- Computadoras multiprocesadores
- Procesos cooperantes
- Celdas de manufactura
- Redes inalámbricas - computación móvil
38Problemas a Resolver en las WANs
- Confiabilidad del intercambio de datos
- Selección de rutas de comunicación
- Control de tráfico
- Prevención de cuellos de botella
- Seguridad
39Problemas Comunes en LANs
- Broadcasting y sincronización
- Elección
- Detección de terminación
- Asignación de recursos
- Exclusión mutua
- Deadlock
- Mantenimiento archivos distribuidos
40Computadoras Multiprocesadores
- Computadora que consiste de diferentes
procesadores generalmente ubicados dentro de un
mismo espacio físico - Procesadores homogéneos
- Pequeña escala geográfica
- Objetivo principal
- mejorar la velocidad del cálculo
41Los Algoritmos Distribuidos y los
Multiprocesadores
- Implementación sistema envío de mensajes
- Implementación memoria virtual compartida
- Balance de carga
- Tolerancia a fallas
42Procesos Cooperantes
- Procesos que interactuan para la solución de un
determinado problema, o para proporcionar un
servicio - Comparten memoria en común
- Trabajan sobre el mismo procesador
- Ejemplo sistemas operativos, (daemons)
43Algoritmos Distribuidos y los Procesos
Cooperantes
- Exclusión mutua
- Deadlocks
- Sincronización
- Intercambio de información
- Asignación recursos
44Celdas de Manufactura
- Robots conectados entre ellos a través de un
medio de comunicación, cada uno desarrollando una
actividad en particular, con un objetivo global
en común - - ensamblaje
- - control de un determinado sistema
45Computación Móvil
- Wireless Local Area Networks o WLANs.
- Ausencia de cables como medio de comunicación.
- Envío/recepción de ondas electromagnéticas que
viajan del emisor al receptor a través del
espacio. - Computadoras desatadas (untethered o tetherless
computer). - Computadoras y aplicaciones móviles.
- Computadoras nómadas.
46Problemas Resueltos por los Algoritmos
Distribuidos
- Ruteo
- Pagging
- Información de la ubicación de la unidad móvil
(almacenamiento y actualización) - Consistencia
- Seguridad
- Transferencias de llamadas
47Algoritmos distribuidos?
- Qué distribuir?
- Datos
- Control
48Distribuyendo los datos
- La distribución puede tomar diversas formas
- Duplicación
- Particionamiento
49La Duplicación de Datos
- Existe duplicación de un dato x, si este se
encuentra - duplicado en n ejemplares x1, x2 .... xn, donde
1,2, .... n - son los identificadores de los sitios que
participan en el - algoritmo distribuido.
- Asegurar la coherencia mutua de las copias a
todo instante - las copias físicas xi tengan el mismo valor x
- x1 x2 ...... xi ...... xn x
50Ejemplo de duplicación
Pierre 500 Sam 700 Juan 900
Pierre 500 Sam 700 Juan 900
x2
x1
Pierre 500 Sam 700 Juan 900
x3
51Partición de Datos
- Hablamos de particionamiento de datos cuando,
estando accesibles desde todos los sitios, los
datos son particionados de tal forma que cada una
de las particiones se encuentra sobre un sitio
dado - Para obtener la totalidad de la información se
tiene - que consultar a todo el mundo
- I (x1 x2 ... xi ... xn)
52Ejemplo de Partición
Sam 500
Pierre 500
x2
x1
Juan 900
x3
53Distribuyendo el Control
- No existe una jerarquía estática
- No hay un proceso líder que en permanencia
asegure el control - Puede ser necesario un algoritmo de asignación de
funciones - Muy a menudo depende del problema que se intenta
resolver