espressività di linguaggi concorrenti linda like
DESCRIPTION
Espressività di linguaggi concorrenti Linda-likeTRANSCRIPT
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
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)
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.
4
Caratteristiche principali
• Comunicazione asincrona • Operazione di lettura • Predicati input/read condizionali • Oggetti dati anonimi • Accesso associativo
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).
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.
7
Comunicazione asincrona
out (a)
a
in (a)
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)
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
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.
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)
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
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
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〉 ⇑ (*)
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)
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.
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)
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) ⇑
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
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’ →←
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
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 σ(α)
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) ⇑
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)
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 →←