Working Hypothesis
Programacion Concurrente y distribuida
Camilo Rueda 1
1Universidad Javeriana-Cali
1 de febrero de 2010
Working Hypothesis Introd
Motivacion
PremisaEl contexto de aplicacion de la
Ingenierıa de Softwareesta cambiando
Working Hypothesis Introd
Motivacion
PremisaEl contexto de aplicacion de la
Ingenierıa de Softwareesta cambiando
CPU multi-nucleo
Working Hypothesis Introd
Motivacion
PremisaEl contexto de aplicacion de la
Ingenierıa de Softwareesta cambiando
CPU multi-nucleo
Programas en la web
Working Hypothesis Introd
Motivacion
PremisaEl contexto de aplicacion de la
Ingenierıa de Softwareesta cambiando
CPU multi-nucleo
Programas en la web
Dispositivos moviles programables
Working Hypothesis Introd
Motivacion
PremisaEl contexto de aplicacion de la
Ingenierıa de Softwareesta cambiando
CPU multi-nucleo
Programas en la web
Dispositivos moviles programables
Programas interactuan con el mundo fısico
Working Hypothesis Introd
Motivacion (cont)
Conceptos, modelos, tecnicasy metodologıas
deben adaptarse
Working Hypothesis Introd
Motivacion (cont)
Conceptos, modelos, tecnicasy metodologıas
deben adaptarse
En software tradicional:
Concepto Modelo Tecnica
Modularidad Tipo abstracto de datos Clase
Working Hypothesis Introd
Motivacion (cont)
Conceptos, modelos, tecnicasy metodologıas
deben adaptarse
En el nuevo contexto:
Concepto Modelo Tecnica
Proceso objeto activo Puerto+cola de mensajesLocalidad ... ...
Exclusion mutua ... ...Imparcialidad (“fairness”) ... ...
... ... ...
Working Hypothesis Introd
Por que nuevas metodologıas?
Ejemplo: Exclusion mutua
P1 ≡l0 : loop forever do
l1 : seccion no crıtical2 : s := 1;l3 : y1 := 1;l4 : wait (y2 = 0) ∨ (s 6= 1);l5 : seccion crıtical6 : y1 := 0
od
P2 ≡m0 : loop forever do
m1 : seccion no crıticam2 : s := 2;m3 : y2 := 1;m4 : wait (y1 = 0) ∨ (s 6= 2);m5 : seccion crıticam6 : y2 := 0
od
ejecutar : s := 1; y1, y2 := 0, 0; [P1 ||P2]
funciona?
Working Hypothesis Introd
Por que nuevas metodologıas?
Ejemplo: Exclusion mutua
P1 ≡l0 : loop forever do
l1 : seccion no crıtical2 : s := 1;l3 : y1 := 1;l4 : wait (y2 = 0) ∨ (s 6= 1);l5 : seccion crıtical6 : y1 := 0
od
P2 ≡m0 : loop forever do
m1 : seccion no crıticam2 : s := 2;m3 : y2 := 1;m4 : wait (y1 = 0) ∨ (s 6= 2);m5 : seccion crıticam6 : y2 := 0
od
ejecutar : s := 1; y1, y2 := 0, 0; [P1 ||P2]
funciona?Exactamente por que?
Working Hypothesis Introd
Por que nuevas metodologıas?
Ejemplo: Exclusion mutua
P1 ≡l0 : loop forever do
l1 : seccion no crıtical2 : y1 := 1;l3 : s := 1;l4 : wait (y2 = 0) ∨ (s 6= 1);l5 : seccion crıtical6 : y1 := 0
od
P2 ≡m0 : loop forever do
m1 : seccion no crıticam2 : y2 := 1;m3 : s := 2;m4 : wait (y1 = 0) ∨ (s 6= 2);m5 : seccion crıticam6 : y2 := 0
od
ejecutar : s := 1; y1, y2 := 0, 0; [P1 ||P2]
funciona?
Working Hypothesis Introd
Por que nuevas metodologıas?
Ejemplo: Exclusion mutua
P1 ≡l0 : loop forever do
l1 : seccion no crıtical2 : y1 := 1;l3 : s := 1;l4 : wait (y2 = 0) ∨ (s 6= 1);l5 : seccion crıtical6 : y1 := 0
od
P2 ≡m0 : loop forever do
m1 : seccion no crıticam2 : y2 := 1;m3 : s := 2;m4 : wait (y1 = 0) ∨ (s 6= 2);m5 : seccion crıticam6 : y2 := 0
od
ejecutar : s := 1; y1, y2 := 0, 0; [P1 ||P2]
funciona?Exactamente por que?
Working Hypothesis Introd
Estrategia del curso
Presentar con cada concepto deprogramacion concurrente y distribuida,sus modelos y tecnologıas
Working Hypothesis Introd
Estrategia del curso
Presentar con cada concepto deprogramacion concurrente y distribuida,sus modelos y tecnologıas
Para los modelos
Formalizarlos en un lenguaje de nucleo extendible,el Kernel Oz
Working Hypothesis Introd
Estrategia del curso
Presentar con cada concepto deprogramacion concurrente y distribuida,sus modelos y tecnologıas
Para los modelos
Formalizarlos en un lenguaje de nucleo extendible,el Kernel Oz
Para las tecnicas
Programarlas en el lenguaje de nucleo,construir aplicaciones
Working Hypothesis Introd
El Lenguaje de nucleo
Lenguaje de programacion minimal:con el mınimo de construcciones necesariaspara representar un concepto
Working Hypothesis Introd
El Lenguaje de nucleo
Lenguaje de programacion minimal:con el mınimo de construcciones necesariaspara representar un concepto
Expresivo
Working Hypothesis Introd
El Lenguaje de nucleo
Lenguaje de programacion minimal:con el mınimo de construcciones necesariaspara representar un concepto
Expresivo
Implementable e implementado
Working Hypothesis Introd
El Lenguaje de nucleo
Lenguaje de programacion minimal:con el mınimo de construcciones necesariaspara representar un concepto
Expresivo
Implementable e implementado
Simple
Working Hypothesis Introd
El Lenguaje de nucleo
Lenguaje de programacion minimal:con el mınimo de construcciones necesariaspara representar un concepto
Expresivo
Implementable e implementado
Simple
Modular (o “incrementable”)
Working Hypothesis Introd
El Lenguaje de nucleo
Lenguaje de programacion minimal:con el mınimo de construcciones necesariaspara representar un concepto
Expresivo
Implementable e implementado
Simple
Modular (o “incrementable”)
Realısticamente cercano a lenguajes existentes
Working Hypothesis Introd
El Lenguaje de nucleo
Lenguaje de programacion minimal:con el mınimo de construcciones necesariaspara representar un concepto
Expresivo
Implementable e implementado
Simple
Modular (o “incrementable”)
Realısticamente cercano a lenguajes existentes
Semantica precisa
Nombre de moda: “framework”
Working Hypothesis Introd
El KL Oz: modelo declarativo
< st > ::=< st1 >< st2 > secuencia de comandos
local < var > in < st > end variable localif < var > then < st1 > condicional
else < st2 > endcase < var > of casos
< patron > then < st1 >[ ] < patronk > then < stk >
else < st >end{< var >< arg1 > . . . < argn > } llamado a procedimiento
Por que no hay declaracion de procedimientos?
Working Hypothesis Introd
El KL Oz: modelo declarativo
< st > ::=< st1 >< st2 > secuencia de comandos
local < var > in < st > end variable localif < var > then < st1 > condicional
else < st2 > endcase < var > of casos
< patron > then < st1 >[ ] < patronk > then < stk >
else < st >end{< var >< arg1 > . . . < argn > } llamado a procedimiento
Por que no hay declaracion de procedimientos? son valores:< valor >::=< numero > | < registro > | < proced >< proced >::= proc { $ < arg1 > . . . < argn >} < st > end
Working Hypothesis Introd
Por que KL en el curso
Por ser dispositivo de computo: refuerza conceptos teoricosviendo su realizacion practica
es a la vez riguroso, simple y practico.
Puede cubrir varios paradigmas de programacion
Puede aumentarse para distintos modelos de computacion:Programacion concurrenteProgramacion distribuida
Working Hypothesis Introd
Modelos de computacion (version PVR&SH)
Declarativo ((X, un poco)
Abstraccion procedimental y recursionEvaluacion perezosaProgramacion de alto ordenLenguajes: ML ( caML)
Estado explıcito (imperativo)
Funciones con memoriaTipos abstractos de datosLenguajes: C
Concurrente declarativo o dirigido por datos (X)
Programacion multi-hilos (X)Flujos (streams) (X)Sincronizacion de procesos (X)
Working Hypothesis Introd
Modelos (2)
Concurrencia por paso de mensaje (X)
Asincronıa (X)Puertos (X)Agentes (X)Lenguajes: Earlang (X)
Orientado-objetos
HerenciaClase, objetoLenguajes: Java, Eiffel, C++, et al.
Concurrencia de estado compartido (X)
Candados (X)Monitores (X)Transacciones (X)Lenguajes: Java concurrente (X)
Working Hypothesis Introd
Modelos (3)
Programacion distribuida (X)
Distribucon de datos (X)istribucion de estado (X)Patrones de programacion distribuida (X)Protocolos distribuidos (X)Manejo de fallas (X)aspectos de seguridad (X)Movilidad (X ?)
Working Hypothesis Introd
Objetivos generales
Saber disenar programas concurrentes y distribuidos
Poder razonar formalmente sobre un programa concurrente odistribuido
Conocer como verificarlos
Poder implementar un programa concurrente o distribuidousando el lenguaje de nucleo
Working Hypothesis Introd
Programa concurrente vs secuencial
Secuencial:
Observables: Parejas de estados iniciales y finalesi.e. Valores de las variables de entrada/salidaEl como se llega al estado final no importaHay un solo camino posible al estado final
Concurrente:
Estados intermedios son tan importantes como los finales(sincronizacion)Observables:
Conjunto de variables que ocurren en un componenteConjunto de variables con las que se comunica
Working Hypothesis Introd
Semantica de la concurrencia
traza: una secuencia particular de transiciones atomicasde estado
σ0 →α1 σ1 →α2 ...→αi σi →αi+1 σi+1
σi : Estados
αi : acciones atomicas
α1α2... es un intercalamiento (interleaving). Corresponde auna historia del proceso
Semantica de un programa:conjunto de todas sus historias posibles
Working Hypothesis Introd
Como razonar sobre prog. concurrentes?
Inspeccionar cada historia?
Working Hypothesis Introd
Como razonar sobre prog. concurrentes?
Inspeccionar cada historia? son demasiadas!!
Working Hypothesis Introd
Como razonar sobre prog. concurrentes?
Inspeccionar cada historia? son demasiadas!!
Mejor:Representar conjuntos enteros de trazas por sus propiedadesun predicado representa un conjunto de estados
Un programa es una relacion entre predicados
Working Hypothesis Introd
Como involucrar sincronizacion?
La comunicacion permite a un proceso influir sobre otro
Posibilidades:
Variables compartidasPaso de mensajes (canales compartidos)
Esquemas de sincronizacion:
Exclusion mutuaSincronizacion condicionalComunicacion sıncrona
Working Hypothesis Introd
Ejemplo
ENVIA RECIBEBUFFER
Exclusion mutua entre envıo y recepcion
Sincronizacion condicional: Evitar que el mismo mensaje seenvıe dos veces.
Protocolo de comunicacion: sincronıa.
Working Hypothesis Introd
Semantica operacional del KL
Las variables son de asignacion unicaLa asociacion de variables con valores se mantiene en elalmacen (“store”)El store esta compuesto de entidades: variables con susvalores.
Working Hypothesis Introd
Identificadores y variables
Los identificadores son las variables del usuario en unprograma
Un identificador referencia una entidad del store
Working Hypothesis Introd
Tipos en el modelo declarativo
Working Hypothesis Introd
Maquina abstracta de KL
Un store de asignacion unica σ: conjunto de variablesx1, . . . , xk
Un Ambiente E : funcion de identificadores a variables del store{〈x〉1 → x1, . . . 〈x〉n → xn, }Una Instruccion Semantica: pareja (〈s〉,E )
s: instruccionE : ambiente
Un estado de ejecucion: pareja (ST , σ)ST : pila de instrucciones semanticas
Una computacion: secuencia de estados de ejecucion, a partirde un estado inicial
(ST0, σ0)→ (ST1, σ1)→ (ST2, σ2)→ . . .
Working Hypothesis Introd
Ejecucion de un programa
El estado de ejecucion inicial es [(〈s〉, ∅)], ∅). La instruccionsemantica inicial es (〈s〉, ∅) con un ambiente vacıo, y el storeinicial es vacıo
En cada paso de ejecucion, el primer elemento de ST se sacade la pila y la ejecucion prosigue segun la forma del elemento
El estado final (si existe) es en el que la pila semanticaesta vacıa.
Una pila semantica puede estar en uno de los estados:
corriendo: ST puede hacer un paso de ejecucionterminado: ST es vacıosuspendido: ST no es vacıo, pero no puede ejecutar un paso
Working Hypothesis Introd
Ejemplo: instruccion local
Instruccion semantica: (local 〈x〉in 〈s〉end ,E )
La ejecucion consiste de las acciones siguientes:
Crear una variable x nueva en el storeAgregar a la pila (〈s〉,E + {〈x〉 → x})
Working Hypothesis Introd
Ejemplo: instruccion if
Instruccion semantica: (if 〈x〉then 〈s〉1else 〈s〉2end ,E )
Esta instruccion tiene una condicion de activacion: E (〈x〉)debe estar determinado, i.e. ligado a numero, registro oprocedimiento
La ejecucion consiste de las acciones siguientes:
Si la condicion de activacion se cumple, entoncessi E (〈x〉) no es un booleano, levante condicion de errorsi E (〈x〉) es verdadero, agregar a la pila (〈s〉1,E )si E (〈x〉) es falso, agregar a la pila (〈s〉2,E )
Si la condicion de activacion no se cumple, se suspende laejecucion
Si otra actividad hace la condicion de activacion cierta, laejecucion puede continuar. Esto permite programacion de flujode datos (concurrencia declarativa)
Working Hypothesis Introd
Ejemplo: procedimientos
Un valor procedimental es una pareja:(proc {$〈y〉1 . . . 〈y〉n}〈s〉end ,CE )donde CE (el ambiente contextual) es el ambiente en el quese definio el procedimiento
En un llamado a procedimiento({〈x〉 〈x〉1 . . . 〈x〉n},E ):
Si E (〈x〉) es de la forma(proc {〈y〉1 . . . 〈y〉n}〈s〉 end ,CE ), entonces agregue a la pila
(〈s〉,CE + {〈y〉1 → E (〈x〉1), . . . , 〈y〉n → E (〈x〉n)})Esto permite programacion de alto orden como en lenguajesfuncionales
Working Hypothesis Introd
Importancia del modelo declarativo
Un programa declarativo puede particionarse en componentesque pueden escribirse, chequearse y probar su correccion
independientemente de los otros
Hay tecnicas simples de razonamiento para construirprogramas
Working Hypothesis Introd
tarea
Asegurar conocimientos basicos de Mozat: leer libro PVR, cap2 (hasta 2.7 )
Escriba la ejecucion formal del programa
local Op W inproc {Op X Y F R}
if X > Y then R = {F X Y }else R = {F Y X} endend{Op 7 5 fun {$ X Y } X − Y end W }
end
Working Hypothesis Introd
Primeros programas en Oz
(archivo primeros.oz)