Unidad I Fundamentos de
Sistemas Distribuidos
Temario
1.1. Características de un sistema distribuido
1.2. Objetivos de los sistemas distribuidos 1.3. Ventajas y desventajas de los sistemas distribuidos
1.4. Complejidad de los sistemas distribuidos
1.5. Técnicas de construcción
1.6. Requerimientos de aplicación 1.7. Arquitectura básica
1.1. Características de un
sistema distribuido
• Un Sistema Distribuido (SD) es aquél que se ejecuta como un sistema centralizado, pero que realmente se ejecuta sobre múltiples e independientes CPU, haciéndolo de una forma "transparente" para los usuarios.
Sistemas Distribuidos
• En general, se podría ver a un sistema distribuido como la unión de una tecnología de red y el uso de potentes máquinas multiprocesadores.
• Un sistema distribuido es una colección de computadoras independientes o autónomas que aparecen ante los usuarios del sistema como una única computadora.
Características de un SD
• Múltiples elementos de procesamiento. • Mecanismos de intercomunicación.
• Independencia a fallos en los nodos de procesamiento.
• Estado de compartición. • Esquema de protección. • Sistemas Abiertos.
Diferencias entre un Sistema de
Red y un SD
• Un Sistema de Red (SR) es una colección de sistemas operativos locales, acompañado de servidores de impresión, de archivos, etc., conectados por medio de una red.
• Los SR se ejecutan como funciones locales autónomas a la administración de dispositivos, de procesos, de entradas y salidas, de archivos y recursos en general.
SR vs SD
• Un SD es un solo sistema expandido en toda la red, pero visto como un sólo sistema para todos los elementos que existen en la red.
• Los usuarios no toman cuidado por el lugar donde se localizan sus archivos, procesos, etc.
• Todo el control y las decisiones son tomadas globalmente
1.2. Objetivos de los sistemas
distribuidos
• Compartir información y otros recursos.
• Economizar el rendimiento (procesamiento y almacenamiento).
• Crecimiento incremental. • Alta disponibilidad
1.3. Ventajas y desventajas de
los sistemas distribuidos
• La base comparativa para obtener las ventajas y desventajas de los SD se hace con respecto a una computadora aislada.
• A continuación se mencionan las ventajas de los SD.
Ventajas de los SD
• Con el uso de SD se logra compartir información así como dispositivos periféricos entre más de un usuario.
• Los SD permiten dividir las cargas de trabajo entre diferentes computadoras de manera más eficaz.
• Cuando un nodo de procesamiento falla, el sistema en general sigue funcionando.
Desventajas de los SD
• Debido a que la tecnología de los SD aún está siendo explorada, no se tiene la experiencia suficiente en el diseño, implantación y uso del software distribuido y se debe contestar a preguntas tales como:
• ¿Qué tipos de sistemas operativos, lenguajes de programación y aplicaciones son los adecuados para estos sistemas?,
Desventaja de los SD
• ¿Cuánto deben saber los usuarios de la distribución?
• Las redes de comunicación, pueden llegar a perder mensajes, latencia de las comunicaciones o saturación de mensajes. • Otra de las desventajas de los SD es la
vulnerabilidad que puede sufrir la información que puede llegar a estar disponible para un gran número de usuarios del sistema.
Desventajas de los SD
• Requerimientos de mayores controles de procesamiento y acceso.
• Administración más compleja. • Costos.
1.4. Complejidad de los sistemas
distribuidos
• Los sistemas distribuidos tienen más de dos décadas de haber surgido pero son tan complicados en su construcción tanto como una red de transporte público como el metro, y pasará más tiempo para que podamos entenderlos correctamente y construir uno de la manera más apropiada.
Complejidad de los SD
• La fuente básica de la complejidad de los SD recae en la interconexión de componentes.
• Existen fallas en todos los sistemas, sólo que en un SD resultan más visibles. A continuación se muestran algunos problemas del sistema.
Complejidad de los SD
• Al interconectar dos o más elementos entre si, sus funcionalidades se interfieren.
• Pueden existir también fallas de propagación.
• Se pueden tener fallas por el tamaño del sistema.
Complejidad de los SD
• Las aplicaciones "distribuidas" deben estar preparadas para soportar fallas parciales; lo que representa una complejidad adicional en el diseño de éstas aplicaciones.
• Se deben tener mecanismos para la localización de recursos, la recuperación de éstos, así como la coordinación de las réplicas de los estados de los servidores.
Complejidad de los SD
• No se tiene disponibilidad de una memoria global y un reloj global, no se pueden predecir los retardos y mensajes.
• Se requiere más capacidad de almacenamiento.
• S requiere de sincronización para actualizar el estado del sistema.
Complejidad de los SD
• Los recursos compartidos deben ser accedidos por un proceso a la vez (exclusión mutua) y deben liberarse.
• Seriabilización.
• Los procesos deben solicitar recursos locales o remotos y posteriormente liberados en cualquier orden que puede ser no conocido.
1.5 Técnicas de construcción de
SD
• Seguridad.
• Desempeño y crecimiento modular. • Tiempo de respuesta limitado.
• Control autónomo.
• Temas relacionados con las comunicaciones (ancho de banda, latencia, distancia geográfica).
Consejos para construir SD
• Duplicar la información para aumentar la disponibilidad.
• Usar copias locales de la información para permitir una operación autónoma. Utilizar cachés.
• Usar tiempos de espera para revocar.
• Usar mecanismos estándares para llamadas remotas.
• Utilizar técnicas de criptografía para la autenticación y seguridad de la información.
1.6 Requerimientos de aplicación
• A continuación se muestran algunos de los requerimientos de aplicaciones distribuidas. • Disponibilidad y confiabilidad.
• Transparencia. Es uno de los aspectos más interesantes referente a los SD, consiste en lograr la imagen de un único sistema. Existen diferentes tipos de transferencia.
Tipos de transparencia
• Transparencia de localización. • Transparencia de réplica.
• Transparencia de migración.
Clasificación de SD
• Una de las clasificaciones más aceptadas es la de Flynn, la cual se basa en dos características esenciales: el número de flujos de instrucciones y el número de flujo de datos. La clasificación es la siguiente:
• Una computadora con un sólo flujo de instrucciones y un flujo de datos (SISD, Single Instruction Single Data). Computadoras con monoprocesador.
Clasificación de SD
• Computadoras con un flujo de instrucciones y varios flujos de datos (SIMD, Single Instruction Multiple Data). Procesadores vectoriales.
• Computadoras con múltiples flujos de instrucciones y varios flujos de datos (MIMD, Multiple Instruction Multiple Data). Concepto de SD (no implementada como tal)
Clasificación SD
• Los sistemas MIMD se subdividen en dos grupos:
• Máquinas multiprocesadores. Existe un espacio de direcciones virtuales, compartido por todos los CPU del sistema.
• Sistemas multicomputadoras. Cada máquina tiene su propia memoria en particular.
Clasificación SD
• Las categorías anteriores puede clasificarse de acuerdo a la red de comunicación con la que se interconectan los CPU, en las siguientes categorías:
• Tecnología de bus
Otras clasificaciones de SD
• En todos los sistemas de equipo de cómputo, algunas máquinas están
fuertemente acopladas, mientras que otras
están débilmente acopladas.
• A continuación se muestran cuatro categorías de sistemas de cómputo, en base al acoplamiento y tipo de conexión.
Otras clasificaciones de SD
• Multiprocesadores con base en buses. • Multiprocesadores con conmutador.
• Multicomputadoras con base en buses. • Multicomputadoras con conmutador.
Otras clasificaciones de SD
• En base al acoplamiento del software con el hardware los SD se dividen en:
• Software débilmente acoplado en hardware débilmente acoplado. LAN
• Software fuertemente acoplado en hardware débilmente acoplado (multicomputadoras). SD
• Software fuertemente acoplado en hardware fuertemente acoplado. Sistemas Tiempo Compartido y Servidores Dedicados.
1.7 Arquitectura básica
• Una arquitectura es un conjunto de reglas, definiciones, términos y modelos que se emplean para producir un producto.
• La Arquitectura Cliente/Servidor (C/S) agrupa conjuntos de elementos que efectúan procesos distribuidos y computo cooperativo.
1.7. Arquitectura Cliente/Servidor
• Este modelo se basa en un protocolo
solicitud – respuesta. El cliente envía una
solicitud de cierto servicio al servidor, el servidor realiza el trabajo y regresa el resultado de la operación.
• La principal ventaja de este protocolo es su sencillez, únicamente se necesita la ubicación del servidor.
Arquitectura Cliente/Servidor
• Beneficios:
• Mejor aprovechamiento de la potencia de cómputo (Repartición del trabajo).
• Reducción del tráfico en la red. • Opera bajo sistemas abiertos.
• Facilita el uso de interfaces gráficas variadas y versátiles.
Cliente
• Conjunto de software y hardware que invoca los servicios de uno o varios servidores.
• Características:
– El Cliente oculta al servidor y la red.
– Mantener y procesar todo el diálogo con el usuario.
– Manejo de la interfaz, entrada de datos y validación.
Servidor
• Conjunto de hardware y software que responde a los requerimientos de un cliente. • Tipos comunes de Servidores:
– Servidor de Archivos (FTP, Novell).
– Servidor de Bases de Datos (MySQL, ORACLE, INFORMIX).
– Servidor de Impresión. – Servidor de Terminal.
Servidor
• Funciones del Servidor:
• Acceso, almacenamiento y organización de datos.
• Administración de recursos compartidos.
• Ejecución de toda la lógica para procesar una transacción.
Middleware
• Capa de software que se ejecuta sobre el sistema operativo local ofreciendo unos servicios distribuidos estandarizados.
• Sistema abierto independiente del fabricante. • No depende del hardware y sistema
operativo subyacente. • Ejemplos:
– DCE (Open Group). – CORBA (OMG).
Otras Arquitecturas
• P2P (Peer to Peer)
• Arquitecturas de intermediarios • Arquitecturas de 2, 3 y n-capas
Arquitectura de Sistemas
Centralizados
• Único computador (caro y de gran potencia) con terminales
• Soporte multiusuario
• – Ley de Grosch (obsoleta): • Prestaciones = (Precio)2
1.8. Sistemas Operativos
Distribuidos
• Un Sistema Operativo Distribuido (SOD) extiende el concepto de administración de recursos e interfaces con el usuario hacia computadoras de memoria compartida, el cual consiste en varias computadoras autónomas conectadas por una red de comunicaciones.
Características de los SOD
• Para cada uno de los usuarios debe de ser similar al trabajo en el Sistema Centralizado. • Se ejecuta en múltiples Computadoras.
• Tiene varias copias del mismo Sistema Operativo o de diferentes Sistemas Operativos que proveen los mismos servicios.
Amoeba
• Creado en 1981 en Holanda por Andrew Tanenbaum y otros.
• Es un Sistema Operativo (SO) creado desde cero, sin problemas de compatibilidades.
• Es totalmente transparente ya que no existen máquinas clientes ni servidores
Amoeba
• Está escrito en C y presenta balanceo de carga.
• No hace uso de memoria compartida.
• Dispone de un micronúcleo que se ejecuta en cada máquina.
Mach
• Se originó en 1984 en la Carneige Mellon University.
• Se fusionó con Unix BSD para dar un soporte a aplicaciones legadas.
• La OSF (Open Software Foundation) lo escoge como su SO llamándolo OSF/1.
Mach
• El código creció demasiado por lo que se tuvo que mantener un micronúcleo y el soporte para Unix se hizo a través de un emulador.
• En la década de 1990, surgió Mach 4.
• El Mac OS X está basado en Mach (versión NeXSTEP).
Chorus
• Se originó en Francia en el INRIA.
• Es un sistema modular con soporte para aplicaciones Unix.
• Se caracteriza por el manejo excesivo de hilos.
Plan9
• Se originó a finales de la década de 1980 con apoyo de IBM.
• Es compatible con POSIX.