Sistemas Distribuidos 2010-2 Agenda Introduccin Sistemas de Computo Distribuidos Clases de Aplicaciones Distribuidas Requerimientos para soportar Programacin Distribuida Lenguajes para Programacin Distribuida Lenguaje para programar sistemas distribuidos Paralelismo Comunicacin entre procesos y Sincronizacin Fallas Parciales Conclusiones Bibliografa
Introduccin Cules son las caractersticas para aplicaciones distribuidas? P C MFP Quin debera dar esas caractersticas para crear aplicaciones distribuidas?
Sistemas de Computo Distribuido MIMD : Multiprocesadoras vs. Multicomputadoras. Qu es un S.D.? Fuertemente acoplados y dbilmente acoplados. (HW y SW) Todas las multiprocesadores son fuertemente acopladas? Todas las multicomputadoras son dbilmente acopladas?
Sistemas de Computo Distribuido (Clases de Aplicaciones Distribuidas)
Cules son las razones para programar aplicaciones en sistemas distribuidos? D. Tmp. C. y D. (MFP TF) Esp. Funcional. D. Inh. Sistemas de Computo Distribuido (Clases de Aplicaciones Distribuidas)
Paralelismo, Aplicaciones con gran desempeo. Qu es la granularidad? En qu consiste la granularidad gruesa y en qu la granularidad delgada? La granularidad delgada es ideal para sistemas (HW/SW): Fuertemente acoplados ? Dbilmente acoplados? Sistemas de Computo Distribuido (Clases de Aplicaciones Distribuidas)
Paralelismo, Aplicaciones con gran desempeo. La granularidad gruesa es ideal para sistemas (HW/SW): Fuertemente acoplados? Dbilmente acoplados? Aplicaciones tolerante a fallos Por qu un S.D. puede ser ms fcilmente tolerante a fallos que un S.C. o un P.C?
Sistemas de Computo Distribuido (Clases de Aplicaciones Distribuidas)
Aplicaciones tolerante a fallos Para que una aplicacin sea tolerante a fallos debera ser un Sistema: Granularidad gruesa. delgada o ambos? Bajo o Alto acoplamiento (HW/SW)? Especializacin funcional (Flexibilidad) Qu es? Ncleo monoltico o ncleo microncleo? Aplicaciones con distribucin inherente Sistemas de Computo Distribuido (Requerimientos para soportar Programacin Distribuida)
Bsicamente son 3 requerimientos que distinguen la programacin distribuida de la secuencial, y son: El uso de mltiples procesadores (P) La cooperacin de los procesadores (C) El gran potencial de manejo de fallas parciales (MFP) Quin suple los requerimientos? S.O. L.P. Sistemas de Computo Distribuido (Requerimientos para soportar Programacin Distribuida)
Quin suple los requerimientos? S.O. + L.S. L.P.D. Un S.O. + L.S (-) Un S.O. no conoce de estructuras de datos complejas (+) Eficiencia en algunas tareas Un L.P.D (+) Un modelo de programacin de alto nivel
Sistemas de Computo Distribuido (Lenguajes para Programacin Distribuida)
Qu lenguaje debe utilizarse para una aplicacin? - Cualquier lenguaje es adecuado para elaborar cualquier aplicacin? - El lenguaje puede ser implementado con razonable eficiencia con el HW dado? Distribucin fsica y lgica . D.F.: Multicomputadoras vs. Multiprocesadoras. D.L.: Cmo es la comunicacin: P.M. vs. M.C. Algunas aplicaciones necesitan ms nfasis en un requerimiento que en otro. Lenguaje para programar sistemas distribuidos (Paralelismo) Qu es verdadero paralelismo vs. Pseudo- paralelismo. Es ideal ocultar el paralelismo al programador? En pseudo-paralelismo usar M.C. En todas las aplicaciones el paralelismo es importante?
Lenguaje para programar sistemas distribuidos (Paralelismo) Expresin del paralelismo: Proceso Objeto Sentencia Expresin Clasula Lenguaje para programar sistemas distribuidos (Paralelismo) Proceso Qu es? (Propio estado y datos) Qu tipos de creacin existen? Implcita: Declaracin de variables de tipo proceso Mapeo ms eficiente Explcita: Uso de constructoras Ms flexible
Lenguaje para programar sistemas distribuidos (Paralelismo) Objeto Caractersticas Encapsula comportamiento y datos Uso exclusivo de mensajes para la comunicacin. Herencia Paralelismo: Modelo de objetos activos Lenguajes O.O. secuenciales se basan en el modelo de objetos pasivos.
Lenguaje para programar sistemas distribuidos (Paralelismo) Objeto Modelo de objetos pasivo (Cmo es su funcionamiento?) Cmo se obtiene el paralelismo? (1) Permitir que un objeto se active sin previamente recibir un mensaje (2) Permitir que el objeto siga ejecutndose despus de recibir un mensaje (3) Enviar mensajes a varios objetos (4) Permitir en paralelo enviar y recibir mensajes Lenguaje para programar sistemas distribuidos (Paralelismo) El (1) y (2) efectivamente se asignan a un proceso paralalelo. El (3) y (4) se implementa usando paso de mensajes asincrnico(multicast/broadcast) usando mltiples hilos de ejecucin. Lenguaje para programar sistemas distribuidos (Paralelismo) Paralelismo funcional. Dependencia: ? Lenguajes funcionales (Funciones matemticas) Solo depende de los datos de entrada Lenguajes procedimentales (imperativos) Las funciones pueden afectar a otras de varias formas: Variables globales Apuntadores Lenguaje para programar sistemas distribuidos (Paralelismo) Paralelismo funcional. Lenguajes funcionales: No existen efectos de borde Ejemplo : h ( f(3,4), g(8)) Problemas: Es importante la granularidad, puede ser ms costoso partir en unidades de poco consumo de procesamiento que comunicarse (alto costo de comunicacin) Lenguaje para programar sistemas distribuidos (Paralelismo) Paralelismo Lgico (Clusulas AND/OR). Los lenguajes lgicos pueden ser declarativos como procedimentales. Ejemplo: (1) A :- B,C,D (2) A:- E,F Lectura declarativa: S B,C y D es verdad entonces A es verdad, y s. Lectura procedimental: Para probar el teorema A entonces se deben probar los subteoremas. Lenguaje para programar sistemas distribuidos (Paralelismo) Paralelismo lgico. Ejemplo : h ( f(3,4), g(8)) Lectura procedimental: Oportunidades de paralelismo (1) Las dos clasulas pueden ser invocadas en paralelo (Hasta que una tenga xito o ambas fallen) De la O (2) Por cada una de las dos clasulas, los subtoremas pueden trabajar en paralelo, hasta que todos tengan xito o hasta que uno falle. De la Y Si la clasula comparte variables ests no pueden evaluadas independientemente ( Conflictos) A:- B(X), C(X?) Solucin: Restringir el acceso a las variables compartidas Lenguaje para programar sistemas distribuidos (Mapeo) Qu es el mapeo? El mapeo debe variar si lo que se busca es: Mejorar el tiempo de respuesta. Disponibilidad. Confiabilidad. Si el criterio es mejorar el tmp. Balanceo de carga (S.O) Pero con la gran diferencia que las unidades de paralelismo deben cooperar. Lenguaje para programar sistemas distribuidos (Mapeo) Si el criterio es mejorar la disponibilidad. Mapear en diferentes procesadores, no es aceptable el pseudo-paralelismo. Si el criterio es mejorar la confiabilidad. Es mejor que el mapeo sea transparente al programador ? Pasos del mapeo elaborado por el programador: Las unidades son mapeadas en los procesadores Las unidades en el mismo procesador pueden ser asignadas por prioridades
Lenguaje para programar sistemas distribuidos (Mapeo) En los tres acercamientos para asignar las unidades de paralelismo al procesador se tienen: Tiempo de compilacin (- Flexible pero pueden compartir variables como medio de comunicacin) Tiempo de ejecucin Tiempo de vida Bibliografa Programming Languages for Distributed Computing Systems Bal, Steiner, Tanenbaum)