Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... ·...

Post on 17-Mar-2020

18 views 0 download

Transcript of Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... ·...

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)