Introducción al Computo Distribuido Facultad de Cs. de la Computación Juan Carlos Conde Ramírez Distributed Computing
Contenido 1 Introducción 2 Importancia del Hardware 3 Importancia del Software 1 / 26
Contenido 1 Introducción 2 Importancia del Hardware 3 Importancia del Software 2 / 26
Objetivo: Identicar aspectos fundamentales relacionados con el Computo Distribuido 3 / 26
Sistemas Paralelos Hoy en día los Sistemas de Computo Distribuido y Paralelo son utilizados ampliamente. Un Sistema Paralelo consiste en múltiples procesadores que se comunican entre sí usando memoria compartida. Dado que el número de transistores en un chip se incrementa día con día, los chips multiprocesador ya son usados comúnmente en la mayoría de los dispositivos de computo. Con suciente aplicaciones paralelas, estos sistemas batearán fácilmente el rendimiento de los Sistemas Secuenciales (clásicos) que hoy conocemos. 4 / 26
Sistemas Paralelos Como se muestra a continuación cada uno de estos procesadores se comunican con los demás a través de una Memoria Compartida. Sin embargo, cada uno puede poseer Memoria Local la cual no es compartida con otros procesadores. 5 / 26
Sistemas Distribuidos Por su parte los Sistema Distribuidos se denen como aquellos que contienen múltiples procesadores conectados mediante una Red de Comunicación Cada uno de los procesadores se comunica con los otros enviando mensajes a través de la Red. El uso de estos sistemas se ha incrementado ampliamente debido al decremento en los precios de procesadores para computadoras estándar y a las conexiones con alto ancho de banda ya disponibles. 6 / 26
Sistemas Distribuidos La red de comunicación en la siguiente gura podría ser una Red de Área Local (LAN) tal como una Intranet, o una Red de Área Amplia o Extendida (WAN) como el Internet. 7 / 26
Contenido 1 Introducción 2 Importancia del Hardware 3 Importancia del Software 8 / 26
Implementación La distinción entre el Cómputo Paralelo y el Cómputo Distribuido es sólo a nivel lógico: Dado un sistema físico en el que diversos procesadores hacen uso de memoria compartida, es fácil simular mensajes. A la inversa, dado un sistema físico en el que procesadores están conectados a través de una Red, es posible simular memoria compartida. Por lo tanto, hardware paralelo es capaz de ejecutar software distribuido y vice versa. 9 / 26
Retos Dada la distinción anterior surgen dos preguntas importantes: 1. ¾Se deben desarrollar aplicaciones para hardware paralelo o para hardware distribuido? 2. ¾Se deben escribir aplicaciones asumiendo la existencia de memoria compartida o el paso de mensajes? A nivel de hardware, se esperaría que prevaleciera el MODELO de estaciones de trabajo (workstations) multiprocesador conectadas mediante una red. Así el sistema sería ambos; paralelo y distribuido al mismo tiempo. 10 / 26
Ventajas del Computo Distribuido I Sin embargo, lo cierto es que un sistema no debe ser completamente paralelo por las siguientes razones: Escalabilidad Modularidad y Heterogeneidad Compartición de datos Compartición de recursos Estructura geográca Fiabilidad Bajo coste 11 / 26
Ventajas del Computo Distribuido II Escalabilidad. Los sistema distribuidos son inherentemente más escalables que los sistemas paralelos. En los sistemas paralelos la memoria compartida llega a tener cuellos de botella cuando el número de procesadores se incrementa. Modularidad y heterogeneidad. Un sistema distribuido es más exible por la facilidad que tiene para agregar o eliminar procesadores. Además, cada procesador puede ser de un tipo completamente distinto al de los procesadores existentes. 12 / 26
Ventajas del Computo Distribuido III Compartición de datos. Los sistemas distribuidos proporcionan compartición de datos, como en base de datos distribuidas. Así múltiples organismos son capaces de compartir sus datos con otros. Compartición de recursos. Por ejemplo, un costoso procesador de propósito especial puede ser compartido con múltiples organizaciones si se trata de un sistema distribuido. 13 / 26
Ventajas del Computo Distribuido IV Estructura geográca. La estructura geográca de una aplicación puede ser inherentemente distribuida. El bajo ancho de banda en una comunicación puede forzar el procesamiento local. Esto es particularmente cierto para redes inalámbricas. Fiabilidad. Los sistemas distribuidos son más ables que los sistemas paralelos debido a que el fallo de una sola computadora no afecta la disponibilidad de las otras. 14 / 26
Ventajas del Computo Distribuido V Bajo costo. La existencia y disponibilidad de redes con alto ancho de banda así como las estaciones de trabajo baratas favorecen el cómputo distribuido por razones económicas. 15 / 26
Ventajas del Computo Paralelo Son principalmente de naturaleza tecnológica las razones por las que un sistema no debe ser puramente distribuido y de preferencia poseer un sistema paralelo en cada nodo. La tecnología actual permite actualizar más rápido una localidad de memoria compartida que enviar un mensaje a otro procesador (computadora). Lógicamente, si se requiere, es más eciente obtener paralelismo no o preciso de un sistema paralelo puro que de un sistema distribuido. 16 / 26
Contenido 1 Introducción 2 Importancia del Hardware 3 Importancia del Software 17 / 26
Implementación Como se mencionó antes, la interfaz proporcionada al programador hoy en día puede ser independiente del hardware subyacente. Entonces: ¾Cuál es el MODELO que debe convertirse en el objetivo o meta del programador? 18 / 26
Perspectiva I Los programas se escribirán utilizando objetos distribuidos multi-hilo. Una aplicación construida con este modelo consiste de múltiples procesos pesados (heavyweight) que se comunican a través de mensajes (o invocaciones a métodos remotos). Cada proceso heavyweight consiste de múltiples procesos ligeros o lightweight llamados hilos. Los hilos se comunican a mediante la memoria compartida. Este modelo de software reeja el hardware que está (o se espera que sea) extensamente disponible. 19 / 26
Perspectiva II Se puede obtener el MODELO estándar de un sistema distribuido, asumiendo que existe al menos un hilo por proceso (e ignorando el paralelismo dentro de un proceso). Enfocando la atención en un sólo proceso heavyweight, es posible obtener el MODELO común de un sistema paralelo. Un programa DISTRIBUIDO es más Orientado a Objetos dado que solamente se puede acceder a los datos de un objeto remoto usando un mensaje explícito o haciendo una llamada a un procedimiento (método) remoto. El paradigma Orientado a Objetos promueve la reusabilidad así como un diseño sencillo. 20 / 26
Perspectiva II Cada objeto sería multi-hilo debido a que los hilos son útiles para implementar objetos ecientes. Para muchas aplicaciones, tal como los servidores es necesario tener grandes estructuras de datos compartidos. Es ineciente y una carga de programación tener que dividir una estructura de datos entre varios procesos heavyweight. 21 / 26
Consideraciones Futuras La programación de sistemas paralelos y distribuidos requiere de herramientas y técnicas diferentes a las requeridas para la programación del software secuencial tradicional. Por lo tanto, el enfoque de este curso es precisamente sobre éstas técnicas. 22 / 26
ACTIVIDAD 1: Instalación de JDK e IDE JDK: Versión: Java SE Development Kit 8 Link: http://www.oracle.com/technetwork/java/javase/downloads/ jdk8-downloads-2133151.html Eclipse: Package: Eclipse IDE for Java EE Developers Release: Mars (4.5) Link: http://www.eclipse.org/downloads/packages/ eclipse-ide-java-ee-developers/marsr * No se revisará esta actividad pero a partir de ahora se asume que ya se tienen instaladas estas herramientas. 23 / 26
24 / 26
ACTIVIDAD 2: Investigación Describir brevemente el signicado de los siguientes conceptos computacionales: Cómputo ubicuo. Ley de Moore (contexto: circuitos integrados). Cómputo cuántico. * Presentar tarea escrita a mano en la libreta y en limpio. ** La extensión de la investigación debe ser de al menos media cuartilla 25 / 26
El único lugar en el que Éxito viene antes que Trabajo es en el diccionario [Vidal Sassoon] Juan Carlos Conde Ramírez juanc.conde@cs.buap.mx 26 / 26