Vous êtes sur la page 1sur 44

Leccin 2 La Programacin Concurrente

Definicin de programa concurrente Ejecucin de un programa concurrente Representacin de la ejecucin de un programa concurrente Entrelazado arbitrario de acciones atmicas Correccin de un programa concurrente Propiedades de correccin Equidad de un programa concurrente Una manera de modelar sistemas concurrentes

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

Definicin de programa concurrente


Proceso: programa que ejecuta una secuencia de acciones programa secuencial Programa concurrente: programa en el que intervienen dos o ms procesos secuenciales que cooperan en la realizacin de una tarea procesos objetos compartidos Cooperar implica comunicar
mediante memoria compartida mediante paso de mensajes

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

Ejecucin de un programa concurrente


La ejecucin de un programa concurrente: entrelazado de las acciones atmicas de sus procesos
Cada secuencia de ejecucin define una historia El nmero de historias puede ser muy elevado La sincronizacin de procesos restringe el nmero de posibles historias de ejecucin y (debe) evita(r) las no deseadas
P p1 p2 p3 Q q1 q2 q3 R r1 r2 r3
p1,p2,q1,p3,r1,r2, r1,r2,q1,r3,p1,q2, q1,q2,q3,r1,r2,r3,
J. Ezpeleta-P. lvarez Univ. de Zaragoza 3

Programacin de Sistemas Concurrentes y Distribuidos

Definicin de programa concurrente


Ejemplo de programa concurrente:
boolean encont process Posit integer p := 0 process Negat integer n := 1

encont := false while not encont p := p+1 encont := (f(p)=0)

encont := false while not encont n := n-1 encont := (f(n)=0)

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

Representacin de la ejecucin de un programa concurrente


Estado de un programa secuencial: tupla de valores y contador de programa Estado de un programa concurrente: tupla de los estados de los procesos que lo componen Transicin entre dos estados: representa la ejecucin de la siguiente instruccin de alguno de los procesos Diagrama de estados: grafo que representa el conjunto de posibles estados e historias de ejecucin

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

Entrelazado de acciones atmicas


Accin atmica: su ejecucin es completada sin posibilidad de entrelazado de otras acciones
Influencia de la atomicidad en la correccin

Entrelazado (interleaving) de acciones atmicas: finalizada la ejecucin de una instruccin, la siguiente instruccin de cualquiera de los procesos es candidata a ser ejecutada
Toda secuencia debe ser considerada para el anlisis de la correccin de un programa concurrente El tiempo de ejecucin es ignorado en el anlisis

Es correcta esta abstraccin?

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

Entrelazado de acciones atmicas


arquitectura multitasking (multi-tarea)

M. Ben-Ari Principles of Concurrent and Distributed Programming Addison-Wesley, 2006

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

Entrelazado de acciones atmicas


arquitectura multiprocesador

M. Ben-Ari Principles of Concurrent and Distributed Programming Addison-Wesley, 2006

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

Entrelazado de acciones atmicas


arquitectura distribuida

M. Ben-Ari Principles of Concurrent and Distributed Programming Addison-Wesley, 2006

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

Entrelazado de acciones atmicas


Tres buenas razones para usar la abstraccin del entrelazado:
permitir razonar formalmente sobre el comportamiento del programa
discretizacin de la ejecucin refinamientos sucesivos en el grano de la instrucciones

permite disear sistemas robustos al cambio de hard y soft es (casi) imposible repetir la historia de un programa concurrente
recordatorio: los printf() no sirven

Entrelazado arbitrario de acciones atmicas


Diferentes historias de ejecucin pueden implicar diferentes resultados finales:

integer n:=0 process P integer k1 := 1


1

process Q integer k2 := 2 n := k2
1

n := k1

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

11

Entrelazado arbitrario de acciones atmicas


Diferentes historias de ejecucin pueden implicar diferentes resultados finales:

integer n:=0 process P integer k1 := 1


1

process Q integer k2 := 2 n := k2
1
J. Ezpeleta-P. lvarez Univ. de Zaragoza 12

n := k1

Programacin de Sistemas Concurrentes y Distribuidos

Entrelazado arbitrario de acciones atmicas


Diferentes historias de ejecucin pueden implicar resultados finales iguales:

integer n := 0 process P process Q

n := n + 1

n := n + 1

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

13

Correccin de un programa concurrente


Correccin de un programa concurrente frente a depuracin de un programa secuencial
Imposible demostrar la correccin probando

Tcnicas de anlisis requieren considerar las posibles historias de ejecucin y atributos que expresen el comportamiento deseado
Demuestran, de manera formal, la correccin

El comportamiento deseado se define en trminos de propiedades de correccin

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

14

Propiedades de un programa concurrente


Propiedad de un programa: atributo cierto para cualquier posible historia del programa Bsicamente, dos clases de propiedades:
Propiedades de seguridad: el programa nunca alcanza un "mal" estado alternativamente: algo debe cumplirse siempre correccin parcial, exclusin mutua y ausencia de bloqueos Propiedades de vivacidad: algo bueno ocurrir alternativamente: algo terminar por cumplirse terminacin, equidad dependen en gran medida de la poltica de scheduling

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

15

Equidad de un programa concurrente


Supongamos como propiedad de vivacidad: todos los procesos activos terminan

Las propiedades de vivacidad vienen condicionadas por las polticas de scheduling


Posibles causas de que no se cumpla?

La equidad dbil (weak fairness) es la garanta de que en toda ejecucin una accin continuamente elegible, tarde o temprano se ejecutar

determinan, en cada instante, qu acciones elegibles han de ejecutarse a continuacin viene condicionada por la disponibilidad de recursos en el sistema

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

16

Equidad de un programa concurrente


Terminan?
boolean seguir := true process Sigo while seguir null boolean seguir := true hecho := false process Sigo while seguir hecho := false hecho := true process Acabo while not hecho seguir := false process Acabo seguir := false

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

17

Influencia de la atomicidad en la correccin


Programa concurrente en Java

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

18

Influencia de la atomicidad en la correccin


Programa concurrente en Java

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

19

Influencia de la atomicidad en la correccin


Programa concurrente en Ada

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

20

Influencia de la atomicidad en la correccin


Programa en cdigo mquina para una arquitectura de registros:
integer x := 0 process P process Q

x := x + 1

x := x + 1

integer x := 0 load R1,x add R1,#1 store R1,x Programacin de Sistemas Concurrentes y Distribuidos load R1,x add R1,#1 store R1,x
J. Ezpeleta-P. lvarez Univ. de Zaragoza 21

Influencia de la atomicidad en la correccin


Programa en cdigo mquina para una arquitectura de pila:

integer x := 0 push x push #1 add pop x push x push #1 add pop x

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

22

Una manera de modelar sistemas concurrentes


> enI I enP2 D enP1 + > fuera enP2 + enD enP1

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

23

Una manera de modelar sistemas concurrentes


Modelo: abstraccin de la realidad
visin simplificada centrada en determinados aspectos

Un modelo se debe validar Un modelo debe servir para:


entender el sistema real inferir propiedades del sistema a partir de propiedades del modelo

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

24

Una manera de modelar sistemas concurrentes


> enD I enP1 D enP2 + > fuera enP1 enI + enP2

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

25

Una manera de modelar sistemas concurrentes


enP2 + > fuera enP1 + Bloqueo > fuera enP2 enP1

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

26

Una manera de modelar sistemas concurrentes


enP2

?
+ > Exclusin mutua fuera

+ > fuera enP1 enP1

enP2

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

27

Una manera de modelar sistemas concurrentes

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

28

Una manera de modelar sistemas concurrentes


Recordatorio de conceptos bsicos y mnimos sobre redes de Petri:
lugar transicin marcado transicin sensibilizada disparo de transicin redes ordinarias redes coloreadas

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

29

Una manera de modelar sistemas concurrentes

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

30

Una manera de modelar sistemas concurrentes


Grafo de estados alcanzables del ejemplo anterior
Estudio de propiedades: repetitividad ausencia de bloqueos totales ausencia de bloqueos parciales vivacidad equidad/inanicin

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

31

Una manera de modelar sistemas concurrentes

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

32

Una manera de modelar sistemas concurrentes

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

33

Una manera de modelar sistemas concurrentes

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

34

Una manera de modelar sistemas concurrentes

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

35

Una manera de modelar sistemas concurrentes


Ejercicio:
modelar el sistema asumiendo que queremos distinguir la identidad de los transentes, pero no distinguir cada una de las dos piedras cercanas a la orilla izquierda modelar el sistema asumiendo que queremos distinguir las dos piedras de la orilla izquierda, pero no nos interesa la identidad de los transentes modelar el sistema asumiendo que queremos distinguir la identidad de los transentes y tambin queremos distinguir las dos piedras de la orilla izquierda

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

36

Una manera de modelar sistemas concurrentes


b a d

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

37

Una manera de modelar sistemas concurrentes


Extendamos el sistema
identificando, adems, las piedras de la izquierda

b a d

c
Programacin de Sistemas Concurrentes y Distribuidos
J. Ezpeleta-P. lvarez Univ. de Zaragoza 38

Una manera de modelar sistemas concurrentes


En coloreadas hay una equivalente, pero... El objetivo es hacer un tratamiento simblico til y complicado

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

39

Un primer programa

boolean seguir := true process Sigo while seguir null Programacin de Sistemas Concurrentes y Distribuidos
J. Ezpeleta-P. lvarez Univ. de Zaragoza 41

process Acabo seguir := false

Un primer programa

boolean seguir := true process Sigo while seguir null Programacin de Sistemas Concurrentes y Distribuidos
J. Ezpeleta-P. lvarez Univ. de Zaragoza 42

process Acabo seguir := false

Un primer programa

boolean seguir := true process Sigo while seguir null Programacin de Sistemas Concurrentes y Distribuidos
J. Ezpeleta-P. lvarez Univ. de Zaragoza 43

process Acabo seguir := false

Un primer programa

???

boolean seguir := true process Sigo while seguir null Programacin de Sistemas Concurrentes y Distribuidos
J. Ezpeleta-P. lvarez Univ. de Zaragoza 44

process Acabo seguir := false

Un primer programa

Programacin de Sistemas Concurrentes y Distribuidos

J. Ezpeleta-P. lvarez Univ. de Zaragoza

45

Vous aimerez peut-être aussi