Vous êtes sur la page 1sur 25

Lenguajes de Programacin para

Sistemas de Cmputo Distribuido



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)

Vous aimerez peut-être aussi