Composizione parallela alternanza di azioni Se P e

  • Slides: 22
Download presentation
Composizione parallela - alternanza di azioni Se P e Q sono processi allora (P||Q)

Composizione parallela - alternanza di azioni Se P e Q sono processi allora (P||Q) rappresenta l’esecuzione concorrente di P e Q. L’operatore || è denominato operatore di composizione parallela. ITCH = (scratch->STOP). CONVERSE = (think->talk->STOP). ||CONVERSE_ITCH = (ITCH || CONVERSE). think talk scratch think scratch talk scratch think talk Possibili sequenze di azioni risultanti da un’alternanza dei processi.

Composizione parallela - alternanza di azioni Modello LTS 2 stati 3 stati Descrizione del

Composizione parallela - alternanza di azioni Modello LTS 2 stati 3 stati Descrizione del “comportamento” (0, 0) from ITCH (0, 1) (0, 2) from CONVERSE (1, 2) (1, 1) (1, 0) 2 3 stati

Composizione parallela - alternanza di azioni Modello Reti SA fork think talk CONVERSE scratch

Composizione parallela - alternanza di azioni Modello Reti SA fork think talk CONVERSE scratch ITCH scratch talk join CONVERSE-ITCH ?

Composizione parallela - proprietà algebriche Commutativa: Associativa: (P||Q) = (Q||P) (P||(Q||R)) = ((P||Q)||R) =

Composizione parallela - proprietà algebriche Commutativa: Associativa: (P||Q) = (Q||P) (P||(Q||R)) = ((P||Q)||R) = (P||Q||R).

Modellare l’interazione - azioni condivise Se due processi che devono essere composti hanno delle

Modellare l’interazione - azioni condivise Se due processi che devono essere composti hanno delle azioni in comune, queste azioni sono dette condivise. Per mezzo di azioni condivise si modella l’interazione tra processi. Mentre le azioni non condivise possono essere alternate in modo arbitrario, un’azione condivisa deve essere eseguita nello stesso istante da tutti i processi che vi partecipano MAKER = (make->ready->MAKER). USER = (ready->use->USER). ||MAKER_USER = (MAKER || USER). MAKER si sincronizza con USER quando ready.

Modelli make LTS use make RETI SA ready MAKER ready use Ready use USER

Modelli make LTS use make RETI SA ready MAKER ready use Ready use USER MAKER-USER

labeling di processi a: P pone il prefisso a ad ogni etichetta di azione

labeling di processi a: P pone il prefisso a ad ogni etichetta di azione dell’alfabeto del processo P. Due istanze di un processo “switch”: SWITCH = (on->off->SWITCH). ||DOPPIO_SWITCH = (a: SWITCH || b: SWITCH). Un array di istanze del processo switch : ||SWITCHES(N=3) = (forall[i: 1. . N] s[i]: SWITCH). ||SWITCHES(N=3) = (s[i: 1. . N]: SWITCH).

In Reti SA • Si devono creare tante istanze quanti sono i prefissi •

In Reti SA • Si devono creare tante istanze quanti sono i prefissi • Ogni istanza ha le etichette con uno dei prefissi

process labeling con un insieme di etichette {a 1, . . , ax}: :

process labeling con un insieme di etichette {a 1, . . , ax}: : P sostituisce ogni etichetta n di azione nell’alfabeto di P con le etichette a 1. n, …, ax. n. Inoltre, ogni transizione (n->X) nella definizione di P è sostituita dalle transizioni ({a 1. n, …, ax. n} ->X). Il prefisso di processi è utile per modellare risorse condivise: RISORSA = (riserva->rilascia->RISORSA). UTENTE = (riserva->usa->rilascia->UTENTE). ||CONDIVISIONE DI RISORSE = (a: UTENTE || b: UTENTE || {a, b}: : RISORSA).

Prefissi di processi per risorse condivise a: UTENTE a: riserva a: usa b: UTENTE

Prefissi di processi per risorse condivise a: UTENTE a: riserva a: usa b: UTENTE b: riserva a: rilascia b: usa b: rilascia a: riserva b: riserva RISORSA a: riserva b: usa CONDIVISIONE DI RISORSE b: rilascia a: usa a: rilascia b: rilascia

Prefissi di processi per risorse condivise disponibile a-riserva non disponibile Regola 3 della definizione

Prefissi di processi per risorse condivise disponibile a-riserva non disponibile Regola 3 della definizione Di T composizione a-rilascia disponibile b-riserva non disponibile a-rilascia usa b-rilascia a-riserva b-rilascia

Sistema SA ottenuto dalla T-composizione a-riserva a-usa a-rilascia b-riserva non disponibile

Sistema SA ottenuto dalla T-composizione a-riserva a-usa a-rilascia b-riserva non disponibile

relabeling di azioni Le funzioni di relabeling sono applicate ai processi per rinominare le

relabeling di azioni Le funzioni di relabeling sono applicate ai processi per rinominare le azioni. La forma generale di una funzione di relabeling è la seguente: /{newlabel_1/oldlabel_1, … newlabel_n/oldlabel_n}. Queste funzioni assicurano che processi composti possano essere sincronizzati su azioni particolari CLIENT = (call->wait->continue->CLIENT). SERVER = (request->service->reply->SERVER).

relabeling di azioni ||CLIENT_SERVER = (CLIENT || SERVER) /{call/request, reply/wait}.

relabeling di azioni ||CLIENT_SERVER = (CLIENT || SERVER) /{call/request, reply/wait}.

relabeling di azioni request call wait service continue reply call service reply continue Si

relabeling di azioni request call wait service continue reply call service reply continue Si puo’ usare un operatore di Ri-etichettatura analogo per le Reti SA (Non nativo)

relabeling di azioni - etichette prefisso Una formulazione alternativa del sistema client server è

relabeling di azioni - etichette prefisso Una formulazione alternativa del sistema client server è descritta sotto per mezzo di etichette qualificate o prefisso : SERVERv 2 = (accept. request ->service->accept. reply->SERVERv 2). CLIENTv 2 = (call. request ->call. reply->continue->CLIENTv 2). ||CLIENT_SERVERv 2 = (CLIENTv 2 || SERVERv 2) /{call/accept}.

hiding di azioni - astrazione per ridurre la complessità Applicato a un processo P,

hiding di azioni - astrazione per ridurre la complessità Applicato a un processo P, l’operatore di hiding {a 1. . ax} rimuove i nomi di azioni a 1. . ax dall’alfabeto di P e rende queste azioni celate "silenti". Le azioni silenti sono etichettate tau. Azioni silenti in processi distinti NON sono condivise. Talvolta è più appropriato specificare l’insieme di azioni che devono essere mostrate. . (operatore complementare) Applicato a un processo P, l’operatore di interfaccia @{a 1. . ax} nasconde tutte le azioni nell’alfabeto di P che NON appaiono nell’insieme a 1. . ax.

Hiding di azioni Le seguenti definizioni sono equivalenti: UTENTE = (riserva->usa->rilascia->UTENTE) {usa}. UTENTE =

Hiding di azioni Le seguenti definizioni sono equivalenti: UTENTE = (riserva->usa->rilascia->UTENTE) {usa}. UTENTE = (riserva->usa->rilascia->UTENTE) @{riserva, rilascia}. riserva usa La minimizzazione rimuove azioni tau nascoste per produrre un LTS con comportamento osservabile equivalente. riserva rilascia

Dato il sistema …. . s 1 s 2 a e con X s

Dato il sistema …. . s 1 s 2 a e con X s 5 s 3 s 4 b g s 7 b s 6 c con Y s 8 d con C

Il corrispondente FSP e’: A = (e_con. X --> b --> A | a_con.

Il corrispondente FSP e’: A = (e_con. X --> b --> A | a_con. B --> b --> c_con. Y --> d_con. Be. C -->A) B = (a_con. A --> g --> d_con. Ae. C --> B A_B = (A || B ) (i colori indicano le azioni da sovrapporre) Il cui LST e’ isomorfo al precedente grafo di raggiungibilita’: stesso numero di nodi (stati), stesso numero di archi con eguale etichettatura

FSP - dichiarazione di costanti e di intervalli L’uso di indici serve per modellare

FSP - dichiarazione di costanti e di intervalli L’uso di indici serve per modellare calcoli const N = 1 intervallo T = 0. . N intervallo R = 0. . 2*N SUM = (in[a: T][b: T]->TOTAL[a+b]), TOTAL[s: R] = (out[s]->SUM).

SOMMA CON RETI DI PETRI Leggo 0, 0 Stampo 0 Leggo 0, 1 Leggo

SOMMA CON RETI DI PETRI Leggo 0, 0 Stampo 0 Leggo 0, 1 Leggo 1, 0 Stampo 1 Leggo 1, 1 Stampo 2 Se l’ordine di lettura viene considerato nella definizione degli stati la coppia (1, 0) è diversa dalla coppia (0, 1): Leggo 0, 0 Stampo 0 Leggo 0, 1 Stampo 1 Leggo 1, 0 Leggo 1, 1 Stampo 2