Professional Documents
Culture Documents
Mdulo 1 Introduccin
Facultad de Ingeniera Departamento de Informtica Universidad Nacional de la Patagonia San Juan Bosco
JRA 2009
Computacin Paralela
La computacin paralela se orienta a resolver rpidamente una tarea empleando mltiples procesadores simultneamente. Esta prctica se vuelve popular a partir de fines de los 80s. La posibilidad de construir hardware paralelo de alto rendimiento no fue suficiente, el real desafo fue el software. Los ambientes de programacin paralela fueron dificultosos de usar y ms, todava, estaban atados a arquitecturas particulares. Solo se desarroll esta prctica en problemas cientficos y de ingeniera el mercado era muy restringido. Sin embargo la perspectiva de la programacin paralela se ha tornado mas atractiva con las redes de PCs o estaciones de trabajo llamados clusters.
JRA 2009 Sistemas Distribuidos: Introduccin
Computacin Distribuida
Un sistema distribuido es una coleccin de computadoras autnomas que estn conectadas unas con otras y cooperan compartiendo recursos (p.e. impresoras y bases de datos). Son usados en aplicaciones comerciales y procesamiento de datos. Van desde pequeas configuraciones cliente-servidor sobre redes en varias escalas hasta Internet. Los sistemas distribuidos no son vendidos como tal pero crecen natural e incrementalmente. Las computadoras individuales son interconectadas por redes locales y stas pueden estar interconectadas en una red amplia en la medida que la necesidad lo amerita.
JRA 2009 Sistemas Distribuidos: Introduccin
Computacin Distribuida
El crecimiento de la computacin distribuida ha creado una serie de nuevos problemas que estn en investigacin. Los problemas elementales incluyen la ausencia de reloj comn y la posibilidad de fallas de transmisin. En el ms alto nivel: El acceso a recursos compartidos deben administrarse de modo tal que los diferentes programas de usuarios no se interfieran. Heterogeneidad operativa (hardware, sistemas operativos y los lenguajes, que deberan ser interoperativos). Seguridad.
JRA 2009
JRA 2009
JRA 2009
JRA 2009
Caractersticas Claves
Definiciones: Tarea (task): programa o parte de programa en ejecucin. Es una de las actividades computacionales que tienen lugar al mismo tiempo y/o en diferentes locaciones. Proceso: usado en forma sinnima con tarea (en general). Job: es un programa completo en ejecucin. Nodo o elemento de procesamiento: es una entidad que puede computar (puede ser un simple procesador o multiprocesador)
JRA 2009 Sistemas Distribuidos: Introduccin
P
JRA 2009 Sistemas Distribuidos: Introduccin
Ley de Amdahl: primera observacin [Amdahl, Validity of the single processor approach to achieving large scale computer capabilities; Proc. AFIPS, pp30, 1967]: cada computacin contiene una porcin serial de ejecucin, es decir, alguna parte s del cdigo no es posible paralelizarlo; segunda observacin (ley Gustafson-Barsis)[ElRewini,Lewis; Distributed and Parallel Computing, Manning Publications, 1998]: establece que se usan programas paralelo muy frecuentemente para resolver instancias ms grandes de un problema que su contraparte secuencial; as en la medida que el nmero de procesadores crece, T1 crece mientras que s permanece casi constante, en la prctica T1/s no es una constante.
JRA 2009 Sistemas Distribuidos: Introduccin
JRA 2009
Balance de Carga
Optimizacin Comunicacin
Tcnicas Especficas
Tolerancia a la Latencia
Prefetching Multihilos
JRA 2009
Problemas Intratables
En muchos casos hay serias limitaciones. Por ejemplo: dentro del grupo de problemas intratables resulta el referido a la planificacin de tareas, mas especificamente el de mapear un grafo de programa a la arquitectura. Los procesos y procesadores son representados por nodos y las precedencias y/o comunicaciones por los lados. El objetivo es encontrar un mapeo de los nodos del grafo de programa en los nodos del grafo de la arquitectura, que minimiza algunas funciones de costo de rendimiento. Para varias prcticas relevantes de costos de rendimiento toma mucho tiempo encontrar una solucin ptima o una solucin que garantice estar prxima a la ptima.
JRA 2009
En la medida que los programas paralelos se hacen cada vez mas grandes, los objetivos de la Ingeniera de Software para computacin secuencial deben ser redireccionados. Las herramientas existentes para desarrollo de la computacin secuencial deberan ser transferidas al dominio paralelo. La situacin es mejor en computacin distribuida donde se han desarrollado, con el soporte de la Ingeniera de Software, estndares como CORBA.
JRA 2009
Transparencia
La transparencia es el ocultamiento al usuario o al programador de las funcionalidades del sistema. La funcionalidad escondida es manejada automticamente de manera que el usuario no necesite conocer el detalle. Por otro lado el usuario pierde control sobre la funcionalidad. Hay diferentes grados de transparencia exhibida a usuarios y programadores que trabajan en diferentes niveles del sistema. Por ejemplo: un programador que maneja la distribucin de datos entre procesadores, e implementa una interfaz de usuario para el cual la distribucin es transparente. El concepto de transparencia se asocia cercanamente a la imagen de un sistema simple.
JRA 2009 Sistemas Distribuidos: Introduccin
Transparencia (Cont.)
Bien conocidas formas de transparencia incluyen:
Acceso Transparente: habilita a que objetos de informacin locales y remotos sean accedidos usando operaciones idnticas. Locacin Transparente: permite que objetos de informacin locales y remotos sean accedidos sin conocimiento de su locacin. Concurrencia Transparente: habilita a varios procesos a operar concurrentemente sobre objetos de informacin compartida sin interferencias entre ellos. Replicacin Transparente: implica mltiples instancias de objetos de informacin usados para incrementar confiabilidad y rendimiento sin conocimiento de las rplicas por los usuarios o las aplicaciones.
JRA 2009
Transparencia (Cont.)
Fallas Transparentes: permite el encubrimiento de fallas, los usuarios y/o aplicaciones completan sus tareas a despecho de fallas de hardware o software. Migracin Transparente: permite el movimiento de objetos de informacin en el sistema sin afectar las operaciones de usuarios o aplicaciones. Rendimiento Transparente: el sistema se reconfigura para mejorar el rendimiento cuando la carga vara. Escalabilidad Transparente: el sistema y las aplicaciones se expanden escalarmente sin cambiar la estructura del sistema o los algoritmos de aplicacin.
JRA 2009
Transparencia (Resumen)
Transparencia Acceso Locacin Migracin Relocacin Replicacin Concurrencia Fallas Persistencia Descripcin Esconde diferencias en la representacin de datos y como un recurso es accedido. Esconde la locacin del recurso. Esconde el movimiento de un recurso a otra locacin. Esconde que un recurso pueda ser movido a otra locacin mientras esten uso. Esconde desde donde es utilizado un recurso compartido por varios usuarios competidores. Esconde que un recurso pueda ser compartido por varios usuarios competidores. Esconde la falla y recuperacin de un recurso. Esconde si un recurso (software) esta en memoria o disco.
JRA 2009
JRA 2009
JRA 2009
Escalabilidad
La escalabilidad es un objetivo obvio con un significado difuso. Se dice que un sistema es escalable si sus recursos pueden ser expandidos para acomodarse a un mayor poder de computacin. A nivel de hardware una tpica expansin es el agregado de procesadores. Cuando se agregan procesadores es necesario mejorar, tambin, las comunicaciones del sistema. Tambin se pueden reemplazar recursos por otros mas poderosos. A nivel de software se puede reemplazar el sistema operativo por una nueva versin del mismo. Se puede aplicar a programas, puede ser que el mismo es puesto en ms procesadores. En otros casos puede ser aprovechable adaptar el programa a una nueva situacin (p.e. eligiendo un nuevo algoritmo).
JRA 2009 Sistemas Distribuidos: Introduccin
Escalabilidad (Cont.)
Escalando un programa o sistema se espera cierto incremento de rendimiento. El trmino escalabilidad puede o no implicar la garanta de un incremento. Debido a la variedad de significados, slo unas pocas sentencias generales pueden hacerse sobre la escalabilidad. Una es que la centralizacin debe evitarse pues implica cuellos de botella y limita el paralelismo..
Algunos ejemplos de las limitaciones de la escalabilidad Concepto
Servicios Centralizados Datos Centralizados Algoritmos Centralizados
JRA 2009
Ejemplo
Un nico servidor para todos los usuarios. Una sola gua telefnica en lnea. Ruteo basado en informacin completa.
Escalabilidad (Cont.)
Ejemplo de tcnica de escalamiento: dividir el espacio de nombres DNS en zonas
Genrico
Pases
JRA 2009
Heterogeneidad
Un sistema es heterogneo si est compuesto por hardware y software distinto. Muchos sistemas distribuidos son heterogneos, mientras que programas paralelos son escritos frecuentemente para mquinas homogneas. Aqu aparece la nocin de interoperabilidad: denota la habilidad de diferentes componentes, posiblemente de distintos proveedores, para interactuar. Estas partes pueden ser hardware o software. Es de particular inters la interoperabilidad entre partes de programas que fueron escritos en diferentes lenguajes. Los componentes, para interoperar, deben respetar determinadas interfaces estndares. Un sistema es abierto si los creadores han hecho previsin para que los usuarios o terceras partes agreguen o reemplacen componentes, .. interfaces pblicas.
JRA 2009
Mquina C
SO Local
Un sistema distribuido organizado como middleware. La capa middleware se extiende sobre mltiples mquinas.
JRA 2009 Sistemas Distribuidos: Introduccin
Desventajas y Limitaciones
JRA 2009
JRA 2009
JRA 2009
JRA 2009
Conceptos de Hardware
Diferentes organizaciones bsicas y memorias en sistemas de cmputo distribuidos
Memoria Compartida Memoria Privada Basado en canal Basado en conmutacin
Procesador
Memoria
Sistemas Distribuidos: Introduccin
JRA 2009
Memoria
Canal
JRA 2009
Llave 2x2
Grilla b) Hipercubo
a)
JRA 2009 Sistemas Distribuidos: Introduccin
SOD
SOR
Middleware
JRA 2009
Aplicacin usuario
Mdulo memoria
Mdulo proceso
Mdulo archivo
Modo usuario
Llamada a sistema
Modo kernel
Mquina A
Mquina C
Kernel
JRA 2009
Mquina A
Mquina C
Kernel
Kernel
Red
Kernel
JRA 2009
Red
JRA 2009
Mquina A
Mquina C
Kernel
Kernel
Red
Kernel
JRA 2009
SO de Red
Protocolo comn
SO de Red
En un sistema distribuido basado en middleware abierto, los protocolos usados en cada capa de debera ser el mismo tanto como las interfaces que ofrecen a las aplicaciones.
JRA 2009 Sistemas Distribuidos: Introduccin
JRA 2009
Aplicaciones, servicios
Middleware
JRA 2009
Cliente
invocacin
invocacin
Servidor
resultado
Servidor
resultado
JRA 2009
Cliente Servidor
JRA 2009
servidor Web
Cliente
servidor Web
JRA 2009
JRA 2009
servidor Web
Cliente
Applet
servidor Web
JRA 2009
servidor de cmputo
Cliente
Proceso de aplicacin
JRA 2009
JRA 2009
intranet % % ISP
backbone
JRA 2009
JRA 2009
Internet
intranet huesped
LAN inalmbrica
WAP gateway
Home intranet
JRA 2009
http://www.google.comlsearch?q=kindberg www.google.com Web servers www.cdk3.net www.w3c.org Sist de arch de www.w3c.org Protocols Activity.html http://www.w3c.org/Protocols/Activity.html Internet http://www.cdk3.net/ Browsers
JRA 2009
Fin
Mdulo 1 Introduccin
Facultad de Ingeniera Departamento de Informtica Universidad Nacional de la Patagonia San Juan Bosco