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

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

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

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

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

Sistemas Distribuidos

2007-1

Page 2: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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

Page 3: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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?

Page 4: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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?

Page 5: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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.

Page 6: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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?

Page 7: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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?

Page 8: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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

Page 9: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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.

Page 10: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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

Page 11: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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.

Page 12: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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?

Page 13: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

Lenguaje para programar sistemas distribuidos

(Paralelismo)• Expresión del paralelismo:

– Proceso– Objeto– Sentencia– Expresión– Claúsula

Page 14: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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

Page 15: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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.

Page 16: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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

Page 17: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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

Page 18: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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

Page 19: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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)

Page 20: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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 ……

Page 21: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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

Page 22: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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.

Page 23: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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

Page 24: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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

Page 25: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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

Page 26: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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.

Page 27: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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.

Page 28: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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?

Page 29: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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

Page 30: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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

Page 31: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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)

Page 32: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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.

Page 33: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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…………..

}

Page 34: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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)

Page 35: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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)

Page 36: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

Comunicación entre procesos y sincronización

Paso de mensajes

• Mensajes punto-apunto sincrónicos y asincrónicos.– Modelo sincrónico:

• Desventajas? –Flex.

Page 37: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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.

Page 38: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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.

Page 39: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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.

Page 40: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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?

Page 41: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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.

Page 42: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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

Page 43: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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

Page 44: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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)

Page 45: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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

Page 46: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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

Page 47: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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.

Page 48: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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.

Page 49: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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.

Page 50: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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.

Page 51: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

Agenda

• Introducción• Lenguaje para programar sistemas

distribuidos– Paralelismo– Comunicación entre procesos y

Sincronización– Fallas Parciales

• Taller• Bibliografía

Page 52: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

IPC y SExpresió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

Page 53: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

IPC y SExpresió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)

Page 54: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

IPC y SExpresió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

]

Page 55: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

IPC y SExpresió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

Page 56: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

IPC y SExpresió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”

Page 57: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

IPC y SExpresió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”

Page 58: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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

Page 59: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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.

Page 60: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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.

Page 61: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

Fallas parciales

• Programación Tolerante a fallos– Acercamientos:

– Concepto de “Transacciones”

Page 62: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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

Page 63: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

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.

Page 64: Lenguajes de Programación para Sistemas de Cómputo Distribuido Sistemas Distribuidos 2007-1.

Bibliografía

• Programming Languages for Distributed Computing Systems Bal, Steiner, Tanenbaum)