Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Espressività di linguaggi concorrenti linda like
1. 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. 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. 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.
5. 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. 6
Comunicazione asincrona
out (a) in (a)
Il destinatario può
leggere il generico
messaggio a mediante
la primitiva in(a) che
t r a l ' a l t r o c a u s a
l'eliminazione del
messaggio a dal TS.
8. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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 →←