25
Espressività di linguaggi concorrenti Linda-like Università degli studi di LAquila Facoltà di Scienze mm.ff.nn. Corso di Laurea in Scienze dellInformazione Paolo Diomede

Espressività di linguaggi concorrenti linda like

Embed Size (px)

DESCRIPTION

Espressività di linguaggi concorrenti Linda-like

Citation preview

Page 1: Espressività di linguaggi concorrenti linda like

Espressività di linguaggi concorrenti Linda-like

Università degli studi di L’Aquila Facoltà di Scienze mm.ff.nn. Corso di Laurea in Scienze dell’Informazione

Paolo Diomede

Page 2: Espressività di linguaggi concorrenti linda like

2

Introduzione

P C

I linguaggi di coordinazione forniscono un meccanismo di comunicazione tra processi mediante uno spazio dati condiviso, che, a seconda del linguaggio, prende il nome di: •  Tuple Space (Linda) •  Chemical Solution (Gamma) •  Blackboard (Shared Prolog)

Page 3: Espressività di linguaggi concorrenti linda like

3

Comunicazione generativa •  Questo meccanismo di comunicazione è detto

"generativo" poiché un messaggio, generato da un processo, ha una vita indipendente nello spazio dati condiviso finché non viene prelevato da qualche altro processo.

•  Dopo che un messaggio è stato inserito nello spazio dati condiviso, diviene accessibile a tutti i processi.

•  Un messaggio non è legato a nessun processo in particolare.

Page 4: Espressività di linguaggi concorrenti linda like

4

Caratteristiche principali

•  Comunicazione asincrona •  Operazione di lettura •  Predicati input/read condizionali •  Oggetti dati anonimi •  Accesso associativo

Page 5: Espressività di linguaggi concorrenti linda like

5

Comunicazione asincrona •  E’ realizzata mediante un mezzo di

comunicazione, chiamato Tuple Space (TS) nel linguaggio Linda.

•  Il TS è sempre pronto a ricevere messaggi/tuple dal mittente ed è sempre pronto a distribuire messaggi ai destinatari.

•  Il mittente può depositare un generico messaggio a nel TS mediante la primitiva out(a).

Page 6: Espressività di linguaggi concorrenti linda like

6

Comunicazione asincrona

out (a) in (a)

Il destinatario può leggere i l generico messaggio a mediante la primitiva in(a) che t r a l ' a l t r o c a u s a l ' e l i m i n a z i o n e d e l messaggio a dal TS.

Page 7: Espressività di linguaggi concorrenti linda like

7

Comunicazione asincrona

out (a)

a

in (a)

Page 8: Espressività di linguaggi concorrenti linda like

8

Il linguaggio L0 •  Consideriamo una versione asincrona di CCS,

chiamata L0. •  L0 non possiede:

–  τ prefix –  relabeling –  alternative choice composition operator

•  L0 possiede: –  out (a) –  in (a) –  | (operatore parallelo), \ (restrizione), (recX.C) (ricorsione)

Page 9: Espressività di linguaggi concorrenti linda like

9

Obiettivi •  A partire dal linguaggio L0, consideriamo tre

linguaggi, L1, L2 e L3, ottenuti estendendo L0 con gli operatori di negative-test.

•  Si vuol mostrare che esiste una gerarchia di espressività tra i linguaggi, dove:

Li è più espressivo di Lj i > j

Page 10: Espressività di linguaggi concorrenti linda like

10

Operatori di test negativi

•  Chiamiamo operatori di test negativi quelle primitive di coordinazione che consentono di testare l’assenza dei dati nello spazio dati condiviso.

•  L’obiettivo di questo lavoro è di investigare sul potere espressivo della famiglia di questi operatori.

Page 11: Espressività di linguaggi concorrenti linda like

11

Operatori di test negativi •  Concentreremo il nostro lavoro su tre

possibili primitive che si differenziano nell’abilità di produrre istantaneamente nuovi dati dopo il test.

•  Vedremo in particolar modo le seguenti primitive: – Test-for-absence tfa(a) – Test-and-emit t&e(a) – Test-and-produce t&p(a,b)

Page 12: Espressività di linguaggi concorrenti linda like

12

Le proprietà i.   program distribution preservation

[ P | Q ] = [ P ] | [ Q ]

ii.   symmetry preservation P >< Q ⇒ [ P ] >< [ Q ]

iii.  deadlock preservation P ⇓ m ⇔ [ P ] ⇓ m ∀ P, m

iv.  divergence preservation P ⇑ ⇔ [ P ] ⇑ ∀ P

Page 13: Espressività di linguaggi concorrenti linda like

13

Il linguaggio L1

•  L1 è un estensione del linguaggio L0 con il nuovo prefisso tfa(a), pertanto L0 ⊆ L1.

•  Un processo tfa(a).P attiva P solo se nessuna istanza del dato a è disponibile.

•  Questa primitiva incorpora l’abilità del predicato inp di Linda di osservare l’assenza dei dati, infatti:

inp(a)?P_Q = in(a).P + tfa(a).Q

Page 14: Espressività di linguaggi concorrenti linda like

14

Espressività di L1

•  Vogliamo vedere che L1 ⊆ L0 mostrando che la proprietà (iv) non è soddisfatta.

•  Sia P un agente di L1 tale che: P = tfa(a).(recX.out(b).in(b).X)\b

•  Questo comportamento si formalizza nel seguente modo:

P ⇑ and P | 〈a〉 ⇑ (*)

Page 15: Espressività di linguaggi concorrenti linda like

15

Espressività di L1 Lemma: Q agente di L0 : Se Q ⇒ Q’ Allora Q|R ⇒ Q’|R ∀R

Corollario: Q agente di L0 : Se Q⇑ Allora Q|R ⇑ ∀R

Teorema: ∃ codifica di L1 in L0 che preserva la proprietà (iv)

Dim: (ABS) ∃ [ ] codifica

P è un programma di L1 definito come (*)

Allora P : [P] ⇑ and [P] | [〈a〉] ⇑ →← ( contraddice il corollario)

Page 16: Espressività di linguaggi concorrenti linda like

16

Il linguaggio L2

•  L2 è un estensione del linguaggio L0 con il nuovo prefisso t&e(a).

•  Dopo aver testato l’assenza di un dato di tipo a, questa primitiva produce istantaneamente anche una nuova occorrenza del dato a.

•  In questo modo si realizza un test atomico per l’assenza e per la conseguente emissione di un’istanza del dato a.

Page 17: Espressività di linguaggi concorrenti linda like

17

Espressività di L2

Vogliamo vedere che L2 ⊆ L1 considerando il

problema dell’implementazione di un

meccanismo di mutua esclusione tra agenti

identici:

Q | Q

(composizione parallela di agenti identici)

Page 18: Espressività di linguaggi concorrenti linda like

18

Espressività di L2

•  Vogliamo vedere che L2 ⊆ L1 mostrando che le proprietà (iii) e (iv) non sono soddisfatte.

•  Sia P un agente di L2 tale che: P = t&e(a) | t&e(a)

•  Le proprietà di deadlock e di divergenza si formalizzano nel seguente modo:

t&e(a) | t&e(a) ⇓ m ⇔ m = ⎨a⎬ and t&e(a) | t&e(a) ⇑

Page 19: Espressività di linguaggi concorrenti linda like

19

Espressività di L2 Corollario: Sia Q un programma di L1

Allora ∃ una computazione

Q | Q →2 Q1 | Q1 →2 … →2 Qn | Qn →2 … tale che:

i ) la computazione diverge oppure

ii ) ∃ m : Qm|Qm è in deadlock

Page 20: Espressività di linguaggi concorrenti linda like

20

Espressività di L2

Teorema: ∃ nessun programma che preserva la codifica di L2 in L1 che conserva la proprietà di deadlock (iii) e di divergenza (iv).

Dim: (ABS) ∃ [ ] di L2 in L1 che preserva la (iii) e la (iv)

si ha che: [t&e(a) | t&e(a) ] = [t&e(a)] | [t&e(a)]

Q = [t&e(a)] Q|Q= [t&e(a) | t&e(a) ]

quindi: Q|Q ⇓ m ⇔ m = ⎨a⎬ and Q | Q ⇑

poiché Q è un programma di L1: i) la computazione diverge →←

ii) la computazione termina in una configurazione di deadlock Q’| Q’ →←

Page 21: Espressività di linguaggi concorrenti linda like

21

Il linguaggio L3 •  L3 è un estensione del linguaggio L0 con il nuovo

prefisso t&p(a,b). •  Questa primitiva si differenzia dalla precedente

per l’abilità di emettere di un generico dato b potenzialmente differente da quello che è stato testato.

•  La primitiva test-and-emit può essere simulata nel seguente modo:

t&e(a).P = t&p(a,a).P

Page 22: Espressività di linguaggi concorrenti linda like

22

Espressività di L3

•  Vogliamo vedere che L3 ⊆ L2 mostrando che le proprietà (iii) e (iv) non sono soddisfatte.

Def. Siano P, Q due agenti, allora P >< Q ⇔ ∃ σ : Obs → Obs tale che σ(a) ≠ a ∀a con σ(P)=Q e σ-1 (Q) = P

Fact: P, Q agenti simmetrici : ∃ σ Allora: P →α P’ ⇔ Q → σ (α) Q’

P’, Q’ ancora simmetrici and σ(α)

Page 23: Espressività di linguaggi concorrenti linda like

23

Espressività di L3 •  Sia P un agente di L3 tale che:

P = t&p(a,b) | t&p(b,a) a,b ∈ Obs

•  Le proprietà di deadlock e di divergenza si formalizzano nel seguente modo:

t&p(a,b) | t&p(b,a) ⇓ m ⇔ m = ⎨a⎬ or m = ⎨b⎬

t&p(a,b) | t&e(b,a) ⇑

Page 24: Espressività di linguaggi concorrenti linda like

24

Espressività di L3 Corollario: Siano P, Q due agenti simmetrici di L2

Allora ∃ una computazione

P | Q →2 P1 | Q1 →2 … →2 Pn | Qn →2 …

tale che:

i ) la computazione diverge oppure

ii ) ∃ m : Pm|Qm è in deadlock (dove Pm|Qm sono simmetrici)

Page 25: Espressività di linguaggi concorrenti linda like

25

Espressività di L3 Teorema: ∃ [ ] di L3 in L2 che preserva la proprietà (iii) e (iv)

Dim: (ABS) ∃ [ ] codifica

siano P = [t&p(a,b)] e Q = [t&p(b,a)]

si ha che [t&p(a,b) | t&p(b,a)] = P | Q e P >< Q

poiché P e Q sono programmi di L2: i) la computazione diverge →←

ii) la computazione termina in una configurazione di deadlock Pm|Qm →←