La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Lenguajes de Programación para Sistemas de Cómputo Distribuido

Presentaciones similares


Presentación del tema: "Lenguajes de Programación para Sistemas de Cómputo Distribuido"— Transcripción de la presentación:

1 Lenguajes de Programación para Sistemas de Cómputo Distribuido
Sistemas Distribuidos 2007-1

2 Agenda Introducción Sistemas de Computo Distribuidos
Clases de Aplicaciones Distribuidas Requerimientos para soportar Programación Distribuida Lenguajes para Programación Distribuida Lenguaje para programar sistemas distribuidos Paralelismo Comunicación entre procesos y Sincronización Fallas Parciales Conclusiones Bibliografía

3 Introducción ¿Cuáles son las características para aplicaciones distribuidas? P C MFP ¿Quién debería dar esas características para crear aplicaciones distribuidas?

4 Sistemas de Computo Distribuido
MIMD : Multiprocesadoras vs. Multicomputadoras. ¿Qué es un S.D.? Fuertemente acoplados y débilmente acoplados. ¿Todas las multiprocesadores son fuertemente acopladas? ¿ Todas las multicomputadoras son débilmente acopladas?

5 Sistemas de Computo Distribuido (Clases de Aplicaciones Distribuidas)
¿Cuáles son las razones para programar aplicaciones en sistemas distribuidos? D…Tmp. > C. y >D. Esp. Funcional. D. Inh.

6 Sistemas de Computo Distribuido (Clases de Aplicaciones Distribuidas)
Paralelismo, Aplicaciones con gran desempeño. ¿Qué es la granularidad? ¿En qué consiste la granularidad grande y en qué la granularidad pequeña? La granularidad pequeña es ideal para sistemas: ¿Fuertemente acoplados? ¿Débilmente acoplados?

7 Sistemas de Computo Distribuido (Clases de Aplicaciones Distribuidas)
Paralelismo, Aplicaciones con gran desempeño. La granularidad grande (S.O.) es ideal para sistemas: ¿Fuertemente acoplados? ¿Débilmente acoplados? Aplicaciones tolerante a fallas ¿Por qué un S.D. puede ser más fácilmente tolerante a fallas que un S.C. o un P.C?

8 Sistemas de Computo Distribuido (Clases de Aplicaciones Distribuidas)
Aplicaciones tolerante a fallas Para que una aplicación sea tolerante a fallos debería ser un Sistema: ¿Bajo o Alto acoplamiento? ¿Granularidad grande o pequeña? Especialización funcional ¿Qué es? ¿ Núcleo monolítico o núcleo micronúcleo? Aplicaciones con distribución inherente

9 Sistemas de Computo Distribuido (Requerimientos para soportar Programación Distribuida)
Básicamente son 3 requerimientos que distinguen la programación distribuida de la secuencial, y son: El uso de múltiples procesadores La cooperación de los procesadores El gran potencial de fallas parciales ¿Quién suple los requerimientos? S.O. L.P.

10 Sistemas de Computo Distribuido (Requerimientos para soportar Programación Distribuida)
¿Quién suple los requerimientos? S.O. + L.S. L.P.D. Un S.O. + L.S (-) Un S.O. no conoce estructuras de datos complejas (+) Eficiencia en algunas tareas Un L.P.D (+) Un modelo de programación de alto nivel

11 Sistemas de Computo Distribuido (Lenguajes para Programación Distribuida)
¿Qué lenguaje debe utilizarse para x aplicación? - ¿ Lenguaje adecuado para la aplicación? - ¿ El lenguaje puede ser implementado con razonable eficiencia con el HW dado? Distribución lógica y distribución física. D.F.: Multicomputadoras vs. Multiprocesadoras. D.L.: Cómo es la comunicación: P.M. vs. M.C. Algunas aplicaciones necesitan más énfasis en un requerimiento que en otro.

12 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?

13 Lenguaje para programar sistemas distribuidos (Paralelismo)
Expresión del paralelismo: Proceso Objeto Sentencia Expresión Claúsula

14 Lenguaje para programar sistemas distribuidos (Paralelismo)
Proceso ¿Qué es? (Propio estado y datos) ¿Qué tipos de creación existen? I: Declaración de variables de tipo proceso Mapeo más eficiente E: Uso de constructoras Más flexible

15 Lenguaje para programar sistemas distribuidos (Paralelismo)
Objeto Características Encapsula comportamiento y datos Uso exclusivo de mensajes para la comunicación. Herencia Paralelismo: Modelo de objetos activos Lenguajes O.O. secuenciales se basan en el modelo de objetos pasivos.

16 Lenguaje para programar sistemas distribuidos (Paralelismo)
Objeto Modelo de objetos pasivo (Cómo es su funcionamiento?) ¿Cómo se obtiene el paralelismo? (1) Permitir que un objeto se active sin previamente recibir un mensaje (2) Permitir que el objeto siga ejecutándose después de recibir un mensaje (3) Enviar mensajes a varios objetos (4) Permitir en paralelo recibir y enviar mensajes

17 Lenguaje para programar sistemas distribuidos (Paralelismo)
El (1) y (2) efectivamente se asignan a un proceso paralalelo para cada objeto = modelo de objetos activo. El (3) y (4) se implementa usando paso de mensajes asincrónico ó usando múltiples hilos de ejecución

18 Lenguaje para programar sistemas distribuidos (Paralelismo)
Paralelismo funcional. Lenguajes funcionales (Funciones matemáticas) Solo depende de los datos de entrada Lenguajes procedimentales (imperativos) Las funciones pueden afectar a otras de varias formas: Variables globales Apuntadores

19 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 el tamaño del grano, puede ser más costo partir en unidades de poco consumo de procesamiento que comunicarse (alto costo de comunicación)

20 Lenguaje para programar sistemas distribuidos (Paralelismo)
Paralelismo Lógico (Claúsulas – AND/OR). Los programas lógicos 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 ……

21 Lenguaje para programar sistemas distribuidos (Paralelismo)
Paralelismo lógico. Ejemplo : h ( f(3,4), g(8) Lectura procedimental: Oportunidades de paralelismo (1) Las dos claúsulas pueden ser invocadas en paralelo (Hasta que una tenga éxito o ambas fallen) (2) Por cada una de las dos claúsulas, los subtoremas pueden trabajar en paralelo, hasta que todos tengan éxito o hasta que uno falle + Lectura (procesos) Para probar A, debe ser reemplazado probando tres procesos B,C y D Si la claúsula comparte variables estás no pueden evaluadas independientemente ( Conflictos) A:- B(X), C(X?) Solución: Restringir el acceso a las variables compartidas

22 Lenguaje para programar sistemas distribuidos (Mapeo)
¿Qué es el mapeo? El mapeo debe variar si lo que se busca es: Mejorar el tmp de respuesta Disponibilidad. Si el criterio es mejorar el tmp. Balanceo de carga (S.O) Pero con la gran diferencia que las unidades de paralelismo deben cooperar.

23 Lenguaje para programar sistemas distribuidos (Mapeo)
Si el criterio es mejorar la disponibilidad. Mapear en diferentes procesadores, no es aceptable el pseudo-paralelismo. ¿ 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

24 Lenguaje para programar sistemas distribuidos (Mapeo)
En los tres acercamientos para asignar las unidades de paralelismo al procesador se tienen: Tiempo de compilación (- Flexible pero pueden compartir variables como medio de comunicación) Tiempo de ejecución Tiempo de vida

25 Agenda Introducción Sistemas de Computo Distribuidos
Lenguaje para programar sistemas distribuidos Paralelismo Comunicación entre procesos y Sincronización Fallas Parciales Conclusiones Bibliografía

26 Comunicación entre procesos y sincronización Introducción
¿Cómo las piezas de un programa que se ejecutan en paralelo cooperaran? (CeP y S) ¿La cooperación que tipo de interacción involucra? C S Ejemplo: Proceso A y proceso B. Proceso A requiere un dato X que provee el proceso B. Se debe proveer una forma para que A obtenga el dato X de B. Si B no tiene el dato X listo, se debe tener la capacidad para esperar. Comunicación y sincronización términos estrechamente relacionados.

27 Comunicación entre procesos y sincronización Introducción
Un tema relacionado con la sincronización es no-determinismo. ¿Qué es?: Comportamiento Ejemplo: 2 procesos: Proceso buffer y proceso productor. Proceso buffer puede aceptar una solicitud desde un proceso productor para almacenar un ítem (siempre y cuando el buffer no este lleno). Es necesario una notación para expresar y controlar el no-determinismo.

28 Comunicación entre procesos y sincronización Introducción
¿Cuales son las dos categorías para la comunicación entre procesos (IPC)? DC y PM. ¿Si no se comparte memoria física entre los diferentes sistemas autónomos, cualquier modelo de datos compartidos de qué forma se implementa?

29 Comunicación entre procesos y sincronización Paso de mensajes
¿Qué factores pueden influir en el Paso de mensajes?: ¿Quién envía? ¿Qué se envía? ¿A quién se le envía? ¿Se garantiza la recepción del mensaje? ¿Cómo se manejan los reenvíos? ¿Qué paso cuándo algo esta mal? ¿Qué pasa si el proceso receptor esta ocupado (cola de mensajes o se descarta)?

30 Comunicación entre procesos y sincronización Paso de mensajes
¿Qué modelos existen para especificar el paso de mensajes? M: P-a-P R RPC M: U-V

31 Comunicación entre procesos y sincronización Paso de mensajes
Mensajes punto-a-punto ¿Qué es? (E-R) Lenguajes ofrecen transparentemente confiabilidad (S.O.) ¿Qué clases de interacción existen? Clases: E (accept statement) I (Thread)

32 Comunicación entre procesos y sincronización Paso de mensajes
Mensajes punto-a-punto Si el trato es E o I, esto es transparente al emisor. Explicito: Más control al receptor Diferentes estados y diferentes tipos de mensajes por cada estado. Aceptar mensajes condicionándolos (Parámetros) Ejemplo. Un archivo: abrir el archivo solo si no esta bloqueado.

33 Comunicación entre procesos y sincronización Paso de mensajes
Mensajes punto-a-punto Explicito: Ejemplo (Concurrent C): Accpet open(f) suchthat not_locked(f) { ……………. process open request } Algunos lenguajes dan control sobre la forma de aceptar mensajes ( FIFO, preferencias (tipo, emisor o contenido)) Ejemplo: El servidor de archivos puede manejar las lecturas para cantidades de datos pequeñas Accept read(f, offset,nr_bytes) by nr_bytes { ………….. process read request

34 Comunicación entre procesos y sincronización Paso de mensajes
(B) Otro tema de importancia en el paso de mensajes es el nombramiento ( o direccionamiento) de las partes involucradas en la interacción. ¿En qué consiste? ¿En qué formas se pueden nombrar? D-I Formas: D (static name). simétrico: cada uno conoce el nombre del otro. Asimétrico: solo el emisor nombra al receptor. I (Objeto intermedio –mailbox)

35 Comunicación entre procesos y sincronización Paso de mensajes
Mensajes punto-apunto sincrónicos y asincrónicos. Tema importante decidir cuando se utiliza este modelo. Sincrónico: El emisor es bloqueado hasta que el receptor acepta el mensaje (Exp./Impl.) Asincrónico: El emisor no espera hasta que el receptor acepte el mensaje. Problemas?: Buffer overflow Descarta. (Menos confiable) Control de flujo. (abrazo mortal)

36 Comunicación entre procesos y sincronización Paso de mensajes
Mensajes punto-apunto sincrónicos y asincrónicos. Modelo sincrónico: Desventajas? –Flex.

37 Comunicación entre procesos y sincronización Paso de mensajes
Rendezvous. Modelo en ambos sentidos. Basa en tres conceptos Entry declaration: Muestra como es la es la declaración del proceso. Accept statement: Lista de sentencia que pueden ser ejecutadas cuando la entrada es llamada. Entry call: Similar a la sentencia para llamar un proceso.

38 Comunicación entre procesos y sincronización Paso de mensajes
Rendezvous. Ejemplo (Terminología ADA): accept incr(X:integer; Y: out integer) do Y: X+1; end; Interacción (Pasos) 1. S llama una entrada de R 2. R ejecuta una sentencia accept para la entrada Interacción muy sincronizada Interacción sincronizada Después que R ejecuta la sentencia do, S y R continúan la ejecución en paralelo.

39 Comunicación entre procesos y sincronización Paso de mensajes
Remote Procedure Call (RPC) Comunicación en dos vías Manejo es…como un llamado normal de proceso, excepto que el emisor y el receptor son procesos distintos. Durante la ejecución P y S son bloqueados. S se reactiva con la llegada de parámetros de salida. != Rendezvous que no bloquea el emisor tan pronto se ejecuta la sentencia accept.

40 Comunicación entre procesos y sincronización Paso de mensajes
Remote Procedure Call (RPC) RPC es fulmente sincronizado. La aceptación de un proceso remoto es USUALMENTE implícito y crea un thread de control con el emisor. Importante tema de diseño esta en seleccionar entre transparente y no transparente. ¿En qué consiste la transparencia?

41 Comunicación entre procesos y sincronización Paso de mensajes
Remote Procedure Call (RPC) ¿Por qué RPC no puede ser totalmente transparente?: NEMC Caídas del P.: Bloqueado el (Time-outs) Si P no tiene efectos colaterales, pero si sí? La meta es hacerlo lo + transparente posible.

42 Comunicación entre procesos y sincronización Paso de mensajes
Mensajes de uno-varios Muchas redes soportan broadcast y/o multicast No confiable Ventajas Varias comunicaciones + eficiente que varios mensajes punto-a-punto. Garantizar cierto orden. Ejemplo: BSP (Broadcst Sequential Process) basado en CSP CSP el mensaje es enviado a un específico proceso. BSP enviar a todos los procesadores de una lista. Asincrónico Sin buffer Con buffer

43 Comunicación entre procesos y sincronización Datos compartidos
¿En pseudo-paralelo hay problema? Ventajas sobre PM Compartir datos inmediatamente. Desventajas Control de concurrencia. Métodos: Estructuras de datos distribuidas Variables lógicas compartidas

44 Comunicación entre procesos y sincronización Datos compartidos
Estructuras de datos distribuidas: ¿Qué son? Estructuras de datos que pueden ser manipuladas simultáneamente por múltiples procesos. Ejemplo : LINDA (Espacio de tuplas) Espacio de tuplas: Memoria global (No física) compartido por todos los procesadores de un programa. Elementos (Tuplas)

45 Comunicación entre procesos y sincronización Datos compartidos
Estructuras de datos distribuidas: Espacio de tuplas: ¿Qué son? Secuencias ordenadas de valores [“jones”,31,true] Operaciones (atómicas) out: Adiciona una tupla al espacio read: lee una tupla del espacio in: lee una tupla y también la borra en el espacio. Ejemplo: read (“jones”, var age, var maried) in (“jones), var age, var married

46 Comunicación entre procesos y sincronización Datos compartidos
Estructuras de datos distribuidas: Ejemplo: Si existe más de una conciencia, se seleccionada una arbitrariamente. SI no existe se bloquea hasta que otro proceso adicione la tupla. Para modificar una tupla primero debe ser removido para después ser adicionada (Resuelve que problemas?) Como se distribuye el espacio de tuplas entre los diferentes procesadores: Replicar el espacio en todos los procesadores. Hashing Almacenar la tupla en el procesador donde se elabora el out

47 Comunicación entre procesos y sincronización Datos compartidos
Estructuras de datos distribuidas: Ejemplo: Comunicación anónima: Lee una tupla pero no le interesa que proceso la adiciono.

48 Comunicación entre procesos y sincronización Datos compartidos
Variables lógicas compartidas: Basados en una propiedad asignación sencilla. Inicialmente las variables están desatadas, pero una vez reciben un valor ellas no pueden ser cambiadas. Las variable pueden ser usadas como canales de comunicaciones entre procesos.

49 Comunicación entre procesos y sincronización Datos compartidos
Variables lógicas compartidas: Ejemplo. goal_1(X,Y), goal_2(X,Y), goal_3(X) Resueltas en paralelo por los procesos P1, P2 y P3. La variable x inicialmente “desatada”, es un canal de comunicación entre los tres procesos. Si cualquier proceso ata a X un valor, cualquier proceso lo puede usar. Bloqueo: Si Y es usada para enviar un mensaje entre P1 y P2, entonces P2 puede suspenderse hasta que P1 ata a Y.

50 Comunicación entre procesos y sincronización Datos compartidos
Variables lógicas compartidas: Ejemplo. IDEA: Restringir los derechos de un proceso específico para generar ataduras a las variables. Ejemplo el mecanismo de restricciones son las variables de solo lectura de Concurrent Prolog.

51 Agenda Introducción Lenguaje para programar sistemas distribuidos
Paralelismo Comunicación entre procesos y Sincronización Fallas Parciales Taller Bibliografía

52 IPC y S Expresión y control del no-determinismo
¿Qué es? ¿Cómo se puede expresar el no determinismo (Ejemplo)? ¿Cómo se controla? Select statement Guarded Horn clause

53 IPC y S Expresión y control del no-determinismo
Select Statement ¿Qué es? Lista de G Guard -> statement ¿Qué es una Guarda? Expresión Booleana que ordena una solicitud de comunicación. No debe haber efectos de borde Además una guarda tiene un lugar explicito donde llegan los mensajes. Solicitud (Estados) Éxito (P ok) Fallo (P no ok) Suspendido (P ok pero no envía solicitud)

54 IPC y S Expresión y control del no-determinismo
Select Statement Guarda (Estados) Éxito (Evaluación True) Fallo (Evaluación False) Suspendido (Evaluación True pero..) ¿Qué es entonces el select statement? -Ejemplo (CSP): [ not full (buffer); producer? DepositItem(x) -> add x to end of buffer [] not empty(buffer); consumer?Askfortem() -> consumer!SendItem (frst item of buffer); remove first item from buffer ]

55 IPC y S Expresión y control del no-determinismo
Select Statement Controla el no-determinismo en la comunicación. (Time-outs en la solicitud de la comunicación) Limita el tiempo en el cual un proceso espera un mensaje. Controlar la terminación del proceso

56 IPC y S Expresión y control del no-determinismo
Guarded Horn Clauses Lenguajes lógicos Seleccionar la correcta cláusula. La semántica usa “backtracking” Para cada punto de selección una cláusula arbitraria se analiza y después se evalúa si se hizo una buena o mala selección. Pero si no se hizo el “enlazado” Otra solución != “backtracking” (Paralelismo OR) 1. Se busca todas las cláusulas en paralelo 2. No se permiten “enlazados” durante la ejecución en paralelo hasta que una de las ejecuciones en paralelo haga “commit”

57 IPC y S Expresión y control del no-determinismo
Guarded Horn Clauses Ejemplo (Paralelismo OR) A:- G1,…………,Gn | B1,………………Bm N >= 0 y M >= 0 La conjunción de las metas (Gi) es la llamada guarda y la conjunción de la metas Bi es el cuerpo. El operador | es un operador de conjunción. Una guarda no debe permitir efectos en el ambienta hasta que sea seleccionada. Las guardas abortadas no debe dejar efectos. Ejemplo A(X) :- G(X) | B(X) A(X) :- H(X) | C(X) G(1) :- P(1) H(2) :- Q(2) LA guarda G de la primera cláusula enlaza x en 1 y llama a P, la segunda enlaza x a 2 y llama a Q. Peor estos enlazados no debe ser visibles hasta que en A una de las gurdas G ó H sea “commit”

58 Fallas parciales Introducción V (2): Confiabilidad y Disponibilidad.
El principio de replicación sirve para… ¿Qué es un sistema tolerante a fallos? ¿De quien puede ser la responsabilidad? L S.O. Programador

59 Fallas parciales Programación Tolerante a fallos Acercamientos:
Ignorarlo (Falla tanto un procesador?, es crítico una falla?) Programador haga algo. ¿Cómo se detecta? Si no existen efectos de borde (No se tienen problemas). Se repite. Si existen efectos de borde, entonces es muy importante verificar que efecto de repetir.

60 Fallas parciales Programación Tolerante a fallos Acercamientos:
Si existen efectos de borde, entonces es muy importante verificar que efecto de repetir. Exactamente una vez (si no se cae E/R) Si se cae E y R y se repite hasta que alguna vez tenga éxito. El resultado es el de: Semántica de al menos uno. Pero si existen más procesos involucrados (huérfanos). Pariente murió. ….Para mantener la semántica de al menos uno los huérfanos deben morir antes de volver a empezar. El último de varios es e nombre semántico cuando quedan huerfanos.

61 Fallas parciales Programación Tolerante a fallos Acercamientos:
Concepto de “Transacciones”

62 Fallas parciales Transacciones atómicas
Grupo de operaciones debe ser indivisible y recuperable. ¿Cuándo una transacción es indivisible? ¿Cuándo es recuperable? Recuperable (Técnicas) No aplicar cambios a los objetos originales(copias) Indivisible Ejecución secuencial

63 Fallas parciales Transparencia
Tolerancia a fallos en un sistema de paso de mensajes, como sería? Tener procesos inactivos de backup. Periódicamente se sincronizan. Otra técnica (Recuperación optimista) Puntos de chequeo periódicos. Uso de almacenamiento estable.

64 Bibliografía Programming Languages for Distributed Computing Systems Bal, Steiner, Tanenbaum)


Descargar ppt "Lenguajes de Programación para Sistemas de Cómputo Distribuido"

Presentaciones similares


Anuncios Google