![Page 1: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/1.jpg)
Working Hypothesis
Programacion Concurrente y distribuida
Camilo Rueda 1
1Universidad Javeriana-Cali
1 de febrero de 2010
![Page 2: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/2.jpg)
Working Hypothesis Introd
Motivacion
PremisaEl contexto de aplicacion de la
Ingenierıa de Softwareesta cambiando
![Page 3: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/3.jpg)
Working Hypothesis Introd
Motivacion
PremisaEl contexto de aplicacion de la
Ingenierıa de Softwareesta cambiando
CPU multi-nucleo
![Page 4: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/4.jpg)
Working Hypothesis Introd
Motivacion
PremisaEl contexto de aplicacion de la
Ingenierıa de Softwareesta cambiando
CPU multi-nucleo
Programas en la web
![Page 5: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/5.jpg)
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
![Page 6: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/6.jpg)
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
![Page 7: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/7.jpg)
Working Hypothesis Introd
Motivacion (cont)
Conceptos, modelos, tecnicasy metodologıas
deben adaptarse
![Page 8: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/8.jpg)
Working Hypothesis Introd
Motivacion (cont)
Conceptos, modelos, tecnicasy metodologıas
deben adaptarse
En software tradicional:
Concepto Modelo Tecnica
Modularidad Tipo abstracto de datos Clase
![Page 9: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/9.jpg)
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”) ... ...
... ... ...
![Page 10: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/10.jpg)
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?
![Page 11: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/11.jpg)
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?
![Page 12: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/12.jpg)
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?
![Page 13: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/13.jpg)
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?
![Page 14: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/14.jpg)
Working Hypothesis Introd
Estrategia del curso
Presentar con cada concepto deprogramacion concurrente y distribuida,sus modelos y tecnologıas
![Page 15: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/15.jpg)
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
![Page 16: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/16.jpg)
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
![Page 17: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/17.jpg)
Working Hypothesis Introd
El Lenguaje de nucleo
Lenguaje de programacion minimal:con el mınimo de construcciones necesariaspara representar un concepto
![Page 18: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/18.jpg)
Working Hypothesis Introd
El Lenguaje de nucleo
Lenguaje de programacion minimal:con el mınimo de construcciones necesariaspara representar un concepto
Expresivo
![Page 19: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/19.jpg)
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
![Page 20: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/20.jpg)
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
![Page 21: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/21.jpg)
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”)
![Page 22: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/22.jpg)
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
![Page 23: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/23.jpg)
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”
![Page 24: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/24.jpg)
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?
![Page 25: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/25.jpg)
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
![Page 26: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/26.jpg)
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
![Page 27: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/27.jpg)
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)
![Page 28: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/28.jpg)
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)
![Page 29: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/29.jpg)
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 ?)
![Page 30: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/30.jpg)
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
![Page 31: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/31.jpg)
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
![Page 32: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/32.jpg)
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
![Page 33: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/33.jpg)
Working Hypothesis Introd
Como razonar sobre prog. concurrentes?
Inspeccionar cada historia?
![Page 34: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/34.jpg)
Working Hypothesis Introd
Como razonar sobre prog. concurrentes?
Inspeccionar cada historia? son demasiadas!!
![Page 35: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/35.jpg)
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
![Page 36: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/36.jpg)
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
![Page 37: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/37.jpg)
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.
![Page 38: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/38.jpg)
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.
![Page 39: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/39.jpg)
Working Hypothesis Introd
Identificadores y variables
Los identificadores son las variables del usuario en unprograma
Un identificador referencia una entidad del store
![Page 40: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/40.jpg)
Working Hypothesis Introd
Tipos en el modelo declarativo
![Page 41: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/41.jpg)
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)→ . . .
![Page 42: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/42.jpg)
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
![Page 43: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/43.jpg)
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})
![Page 44: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/44.jpg)
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)
![Page 45: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/45.jpg)
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
![Page 46: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/46.jpg)
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
![Page 47: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/47.jpg)
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
![Page 48: Programación Concurrente y distribuidacic.javerianacali.edu.co/wiki/lib/exe/fetch.php?... · Estrategia del curso Presentar con cadaconceptode programaci on concurrente y distribuida,](https://reader030.vdocuments.pub/reader030/viewer/2022040115/5e76ec3a67514c410c745bbd/html5/thumbnails/48.jpg)
Working Hypothesis Introd
Primeros programas en Oz
(archivo primeros.oz)