single pdf file

This commit is contained in:
Francesco Mecca 2020-05-22 12:15:33 +02:00
parent d3775adf91
commit dd69606455
29 changed files with 369 additions and 254 deletions

View file

@ -1,3 +1,16 @@
#+TITLE: Esercizio Definizioni Matematiche
#+AUTHOR: Francesco Mecca
#+EMAIL: me@francescomecca.eu
#+LANGUAGE: en
#+LaTeX_CLASS: article
#+LaTeX_HEADER: \linespread{1.25}
#+LaTeX_HEADER: \usepackage{pdfpages}
#+LaTeX_HEADER: \usepackage{comment}
#+EXPORT_SELECT_TAGS: export
#+EXPORT_EXCLUDE_TAGS: noexport
#+OPTIONS: H:2 toc:nil \n:nil @:t ::t |:t ^:{} _:{} *:t TeX:t LaTeX:t
#+STARTUP: showall
* Insiemi * Insiemi
** Numeri naturali ** Numeri naturali

Binary file not shown.

View file

@ -1,3 +1,16 @@
#+TITLE: Esercizio CPN
#+AUTHOR: Francesco Mecca
#+EMAIL: me@francescomecca.eu
#+LANGUAGE: en
#+LaTeX_CLASS: article
#+LaTeX_HEADER: \linespread{1.25}
#+LaTeX_HEADER: \usepackage{pdfpages}
#+LaTeX_HEADER: \usepackage{comment}
#+EXPORT_SELECT_TAGS: export
#+EXPORT_EXCLUDE_TAGS: noexport
#+OPTIONS: H:2 toc:nil \n:nil @:t ::t |:t ^:{} _:{} *:t TeX:t LaTeX:t
#+STARTUP: showall
* Rete E * Rete E
#+CAPTION: Rete E #+CAPTION: Rete E

Binary file not shown.

Binary file not shown.

View file

@ -1,3 +1,16 @@
#+TITLE: Esercizio P/N
#+AUTHOR: Francesco Mecca
#+EMAIL: me@francescomecca.eu
#+LANGUAGE: en
#+LaTeX_CLASS: article
#+LaTeX_HEADER: \linespread{1.25}
#+LaTeX_HEADER: \usepackage{pdfpages}
#+LaTeX_HEADER: \usepackage{comment}
#+EXPORT_SELECT_TAGS: export
#+EXPORT_EXCLUDE_TAGS: noexport
#+OPTIONS: H:2 toc:nil \n:nil @:t ::t |:t ^:{} _:{} *:t TeX:t LaTeX:t
#+STARTUP: showall
* Rete A * Rete A
M master identici e S slave identici di tipo 1. M master identici e S slave identici di tipo 1.
@ -6,12 +19,12 @@ M master identici e S slave identici di tipo 1.
La figura rappresenta la rete di Petri P/T dell'esercizio A. Il master La figura rappresenta la rete di Petri P/T dell'esercizio A. Il master
è modellato dai posti M0, M1, M2, M3 e dalle transizioni è modellato dai posti M0, M1, M2, M3 e dalle transizioni
Azione_Locale, Richiesta_Servizio, Attesa_Elaborazione e Reset_M /Azione\under{}Locale/, /Richiesta\under{}Servizio/, /Attesa\under{}Elaborazione/ e /Reset\under{}M/
Lo slave è modellato dai posti S0, S1_a, S1_b, S2_a, S2_b e Lo slave è modellato dai posti /S0/, /S1_a/, /S1_b/, /S2_a/, /S2_b/ e
S3 e dalle transizioni Inizio_Servizio, Azione_Locale_Sa, /S3/ e dalle transizioni /Inizio\under{}Servizio/, /Azione\under{}Locale\under{}S_a/,
Azione_Locale_Sb, Fine_Servizio e Reset_S. La richiesta del servizio /Azione\under{}Locale\under{}S_b/, /Fine\under{}Servizio/ e /Reset\under{}S/. La richiesta del servizio
verso lo slave e` gestita attraverso due buffer, posti Buffer_Input e verso lo slave e` gestita attraverso due buffer, posti /Buffer\under{}Input/ e
posto Buffer_Output. posto /Buffer\under{}Output/.
** Risultati ** Risultati
Nella tabella vengono mostrate il numero di archi e di nodi al variare Nella tabella vengono mostrate il numero di archi e di nodi al variare
@ -52,18 +65,16 @@ Una rete di petri puo` essere ridotta usando le seguendi tecniche:
- eliminazione - eliminazione
- rimozione dei loop - rimozione dei loop
Nelle figure vengono mostrate alcune fasi di riduzione della rete in Nelle figure vengono mostrate alcune fasi di riduzione della rete in
analisi; in ordine sono stati applicati: analisi.
- fusione di alcuni posti #+CAPTION: eliminazione di posti identici
- fusione di alcune transizioni
- eliminazione di alcuni posti
- eliminazione di alcune transizioni
- riduzione di self loop
[[./riduzione/fusione1.jpg]]
[[./riduzione/fusione2.jpg]]
[[./riduzione/eliminazione1.jpg]] [[./riduzione/eliminazione1.jpg]]
# [[./riduzione/eliminazione2.jpg]] #+CAPTION: fusione di posti
[[./riduzione/rimozione1.jpg]] [[./riduzione/fusione1.jpg]]
#+CAPTION: fusione di transizioni
[[./riduzione/fusione2.jpg]]
#+CAPTION: fusione di transizioni e posti
[[./riduzione/fusione3.jpg]]
\clearpage
** P e T invarianti ** P e T invarianti
Tramite GreatSPN possiamo calcolare gli T- e P- semiflussi Tramite GreatSPN possiamo calcolare gli T- e P- semiflussi
@ -71,30 +82,29 @@ Tramite GreatSPN possiamo calcolare gli T- e P- semiflussi
[[./semiflowsAT.jpg]] [[./semiflowsAT.jpg]]
#+CAPTION: P-semiflows #+CAPTION: P-semiflows
[[./semiflowsAP.jpg]] [[./semiflowsAP.jpg]]
\clearpage
Gli P-semiflussi sono i seguenti: Gli P-semiflussi sono i seguenti:
| S0 + S1_a + S2_a + S3 | S0 + S1_{a} + S2_{a} + S3
| S0 + S1_b + S2_b + S3 | S0 + S1_{b} + S2_{b} + S3
| M0 + M1 + M2 + M3 | M0 + M1 + M2 + M3
| S1_a + S2_a + Buffer_output + Buffer_input + M0 + M1 + M3 | • S1_{a} + S2_{a} + Buffer\under{}output + Buffer\under{}input + M0 + M1 + M3
| S1_b + S2_b + Buffer_output + Buffer_input + M0 + M1 + M3 | • S1_{b} + S2_{b} + Buffer\under{}output + Buffer\under{}input + M0 + M1 + M3
Il T-semiflusso e` il seguente: Il T-semiflusso e` il seguente:
\[ | • Inizio\under{}servizio + azione\under{}locale\under{}sa + azione\under{}locale\under{}sb +
Inizio_servizio + azione_locale_sa + azione_locale_sb + \\ | \space{}\space{} Fine\under{}servizio + azione\under{}locale\under{}m + Richiesta\under{}servizio +
Fine_servizio + Reset_s + azione_locale_m + Richiesta_servizio + \\ | \space\space Attesa\under{}elaborazione + Reset\under{}M + Reset\under{}S
Attesa_elaborazione + Reset_m + Reset_s
\]
e dato che comprende tutte le transizioni, il sistema rispetta la e dato che comprende tutte le transizioni, il sistema rispetta la
proprieta` di liveness. proprieta` di liveness.
Dato che la reteA e` interamente coperta dagli P-semiflussi, possiamo Dato che la reteA e` interamente coperta dagli P-semiflussi, possiamo
affermare che la rete sia bounded. affermare che la rete sia bounded.
Gli P-semiflussi ci permettono di ricavare i seguenti invarianti Gli P-semiflussi ci permettono di ricavare i seguenti invarianti
lineari relativi ai marking /m/: lineari relativi ai marking /m/:
| m[S0] + m[S1ₐ] + m[S2ₐ] + m[S3] = 1 | m[S0] + m[S1ₐ] + m[S2ₐ] + m[S3] = 1
| m[S0] + m[S1_{b}] + m[S2_{b}] + m[S3] = 1 | m[S0] + m[S1_{b}] + m[S2_{b}] + m[S3] = 1
| m[M0] + m[M1] + m[M2] + m[M3] = 1 | m[M0] + m[M1] + m[M2] + m[M3] = 1
| m[S1ₐ] + m[S2ₐ] + m[Buffer_output] + m[Buffer_input] + m[M0] + m[M1] + m[M3] = 1 | m[S1ₐ] + m[S2ₐ] + m[Buffer_output] + m[Buffer_input] + m[M0] + m[M1] + m[M3] = 1
| m[S1_{b}] + m[S2_{b}] + m[Buffer_output] + m[Buffer_input] + m[M0] + m[M1] + m[M3] = 1 | m[S1_{b}] + m[S2_{b}] + m[Buffer_output] + m[Buffer_input] + m[M0] + m[M1] + m[M3] = 1
Dato che ∀p ∈ P, m[p] ≥ 0 possiamo affermare, a partire dalle Dato che ∀p ∈ P, m[p] ≥ 0 possiamo affermare, a partire dalle
precedenti uguaglianze che: precedenti uguaglianze che:
- ogni posto nei seguenti insieme e` in mutua esclusione con gli - ogni posto nei seguenti insieme e` in mutua esclusione con gli
@ -110,24 +120,24 @@ precedenti uguaglianze che:
| S1ₐ, S1_{b}, S3, M0, M1, M3 | S1ₐ, S1_{b}, S3, M0, M1, M3
e quindi possiamo provare a dimostrare l'assenza di deadlock e quindi possiamo provare a dimostrare l'assenza di deadlock
partendo dagli invarianti lineari relativi ai marking: partendo dagli invarianti lineari relativi ai marking:
| m[S0] + m[S2ₐ] = 1 | m[S0] + m[S2ₐ] = 1
| m[S0] + m[S2_{b}] = 1 | m[S0] + m[S2_{b}] = 1
| m[M2] = 1 | m[M2] = 1
| m[S2ₐ] + m[Buffer_output] + m[Buffer_input] = 1 | m[S2ₐ] + m[Buffer_output] + m[Buffer_input] = 1
| m[S2_{b}] + m[Buffer_output] + m[Buffer_input] = 1 | m[S2_{b}] + m[Buffer_output] + m[Buffer_input] = 1
Dato che M2 e` marcata, per far si` che /attesa_elaborazione/ non Dato che M2 e` marcata, per far si` che /attesa_elaborazione/ non
venga abilitata: venga abilitata:
| m[Buffer_output] = 0 | m[Buffer_output] = 0
Inoltre per far si` che /Inizio_Servizio/ e /Fine_Servizio/ non vengano abilitate: Inoltre per far si` che //Inizio\under{}Servizio// e //Fine\under{}Servizio// non vengano abilitate:
| m[Buffer_input] + M[S0] ≤ 1 | m[Buffer_input] + M[S0] ≤ 1
| m[S2ₐ] + m[S2_{b}] ≤ 1 | m[S2ₐ] + m[S2_{b}] ≤ 1
Riassumendo, il sistema e` il seguente: Riassumendo, il sistema e` il seguente:
| m[S0] + m[S2ₐ] = 1 | m[S0] + m[S2ₐ] = 1
| m[S0] + m[S2_{b}] = 1 | m[S0] + m[S2_{b}] = 1
| m[S2ₐ] + m[Buffer_input] = 1 | m[S2ₐ] + m[Buffer_input] = 1
| m[S2_{b}] + m[Buffer_input] = 1 | m[S2_{b}] + m[Buffer_input] = 1
| m[Buffer_input] + M[S0] ≤ 1 | m[Buffer_input] + M[S0] ≤ 1
| m[S2ₐ] + m[S2_{b}] ≤ 1 | m[S2ₐ] + m[S2_{b}] ≤ 1
che per la legge di conservazione dei token, non puo` essere che per la legge di conservazione dei token, non puo` essere
soddisfatto. Quindi nel sistema non vi e` la possibilita` di deadlock. soddisfatto. Quindi nel sistema non vi e` la possibilita` di deadlock.
@ -139,19 +149,23 @@ liberamente dai master.
[[./reteB.jpg]] [[./reteB.jpg]]
La figura rappresenta la rete di Petri P/T dell'esercizio B. Il master La figura rappresenta la rete di Petri P/T dell'esercizio B. Il master
è modellato dai posti M0, M1, M2, M3 e dalle transizioni è modellato dai posti /M0/, /M1/, /M2/, /M3/ e dalle transizioni
Azione_Locale, Richiesta_Servizio, Attesa_Elaborazione e Reset_M /Azione\under{}Locale/, /Richiesta\under{}Servizio/,
Lo slave di tipo 1 è modellato dai posti S0, S1_a, S1_b, S2_a, S2_b e /Attesa\under{}Elaborazione/ e /Reset\under{}M/ Lo slave di tipo 1 è
S3 e dalle transizioni Inizio_Servizio, Azione_Locale_Sa, modellato dai posti /S0/, /S1_a/, /S1_b/, /S2_a/, /S2_b/ e S3 e dalle
Azione_Locale_Sb, Fine_Servizio e Reset_S. transizioni /Inizio\under{}Servizio/,
Lo slave di tipo 2 è modellato dai posti R0, R1_a, R1_b, R2_a, R2_b e /Azione\under{}Locale\under{}S_a/, /Azione\under{}Locale\under{}S_b/,
R3 e dalle transizioni Inizio_Servizio_R, Azione_Locale_R, Fine_Servizio e Reset_R. /Fine\under{}Servizio/ e /Reset\under{}S/. Lo slave di tipo 2 è
La richiesta del servizio modellato dai posti /R0/, /R1_a/, /R1_b/, /R2_a/, /R2_b/ e /R3/ e dalle
verso lo slave scelto e` gestita attraverso due buffer, posti transizioni /Inizio\under{}Servizio\under{}R/,
FreeChoice e Risultato. /Azione\under{}Locale\under{}R/, /Fine\under{}Servizio/ e /Reset\under{}R/. La
richiesta del servizio verso lo slave scelto e` gestita attraverso due
buffer, /FreeChoice/ e /Risultato/.
\clearpage
** Risultati ** Risultati
Al variare del marking del master:
| master, slaves | Stati | Archi | | master, slaves | Stati | Archi |
|----------------+--------+--------| |----------------+--------+--------|
| 1, 2 | 40 | 76 | | 1, 2 | 40 | 76 |
@ -165,7 +179,7 @@ FreeChoice e Risultato.
| 9, 2 | 69784 | 373252 | | 9, 2 | 69784 | 373252 |
| 10, 2 | 116116 | 642928 | | 10, 2 | 116116 | 642928 |
Parametrizzando anche il numero di slaves: Parametrizzando anche il marking sugli slaves (R+S):
| master, slaves | Stati | Archi | | master, slaves | Stati | Archi |
|----------------+---------+----------| |----------------+---------+----------|
| 1, 2 | 40 | 76 | | 1, 2 | 40 | 76 |
@ -187,25 +201,20 @@ Tramite GreatSPN possiamo calcolare gli T- e P- semiflussi
[[./semiflowsBT.jpg]] [[./semiflowsBT.jpg]]
#+CAPTION: P-semiflows #+CAPTION: P-semiflows
[[./semiflowsBP.jpg]] [[./semiflowsBP.jpg]]
Gli P-invarianti sono i seguenti: Gli P-invarianti sono i seguenti:
| S0 + S1_a + S2_a + S3 | S0 + S1_a + S2_a + S3
| S0 + S1_b + S2_b + S3 | S0 + S1_b + S2_b + S3
| R0 + R1 + R2 + R3 | R0 + R1 + R2 + R3
| M0 + M1 + M2 + M3 | M0 + M1 + M2 + M3
| S1_a + S2_a + R1 + R2 + M0 + M1 + M3 + Freechoice + P0 + P1 + Risultato | S1_a + S2_a + R1 + R2 + M0 + M1 + M3 + Freechoice + P0 + P1 + Risultato
| S1_b + S2_b + R1 + R2 + M0 + M1 + M3 + Freechoice + P0 + P1 + Risultato | S1_b + S2_b + R1 + R2 + M0 + M1 + M3 + Freechoice + P0 + P1 + Risultato
Gli T-invarianti sono i seguenti: Gli T-invarianti sono i seguenti:
\[ | • Inizio\under{}servizio\under{}R + azione\under{}locale\under{}R +
Inizio_servizio_R + azione_locale_R + \\ | \space\space Fine\under{}servizio\under{}R + Reset\under{}R + azione\under{}locale\under{}m + Richiesta\under{}servizio +
Fine_servizio_R + Reset_R + azione_locale_m + Richiesta_servizio + \\ | \space\space Attesa\under{}elaborazione + Reset\under{}M + Scelta\under{}2
Attesa_elaborazione + Reset_M + Scelta_2 | • Inizio\under{}servizio\under{}S + azione\under{}locale\under{}sa + azione\under{}locale\under{}sb +
\] | \space\space Fine\under{}servizio\under{}S + Reset\under{}s + azione\under{}locale\under{}m + Richiesta\under{}servizio +
\[ | \space\space Attesa\under{}elaborazione + Reset\under{}m + Scelta\under{}1
Inizio_servizio_S + azione_locale_sa + azione_locale_sb + \\
Fine_servizio_S + Reset_s + azione_locale_m + Richiesta_servizio + \\
Attesa_elaborazione + Reset_m + Scelta_1
\]
Dato che ci sono due semiflussi, ognuno relativo alle transizioni dei Dato che ci sono due semiflussi, ognuno relativo alle transizioni dei
due diversi slaves, c'e` possibilita` di starvation. due diversi slaves, c'e` possibilita` di starvation.
Possiamo infatti immaginare una traccia di esecuzione in cui il master Possiamo infatti immaginare una traccia di esecuzione in cui il master
@ -218,34 +227,37 @@ In tal caso non avremmo starvation e la proprieta` di liveness sarebbe rispettat
Dato che la reteB e` interamente coperta dagli P-semiflussi, possiamo Dato che la reteB e` interamente coperta dagli P-semiflussi, possiamo
affermare che la rete sia bounded. affermare che la rete sia bounded.
Dimostriamo invece che la rete non ha possibilita` di deadlock. Dimostriamo invece che la rete non ha possibilita` di deadlock.
| m[S0] + m[S1_a] + m[S2_a] + m[S3] = 1 | • m[S0] + m[S1_a] + m[S2_a] + m[S3] = 1
| m[S0] + m[S1_{b}] + m[S2_{b}] + m[S3] = 1 | • m[S0] + m[S1_{b}] + m[S2_{b}] + m[S3] = 1
| m[R0] + m[R1] + m[R2] + m[R3] = 1 | • m[R0] + m[R1] + m[R2] + m[R3] = 1
| m[M0] + m[M1] + m[M2] + m[M3] = 1 | • m[M0] + m[M1] + m[M2] + m[M3] = 1
| m[S1_a] + m[S2_a] + m[R1] + m[R2] + m[M0] + m[M1] + m[M3] + m[Freechoice] + m[P0] + m[P1] + m[Risultato] = 1 | • m[S1_a] + m[S2_a] + m[R1] + m[R2] + m[M0] + m[M1] +
| m[S1_{b}] + m[S2_{b}] + m[R1] + m[R2] + m[M0] + m[M1] + m[M3] + m[Freechoice] + m[P0] + m[P1] + m[Risultato] = 1 | \space{}\space{} m[M3] + m[Freechoice] + m[P0] + m[P1] + m[Risultato] = 1
| • m[S1_{b}] + m[S2_{b}] + m[R1] + m[R2] + m[M0] + m[M1] +
| \space{}\space{} m[M3] + m[Freechoice] + m[P0] + m[P1] + m[Risultato] = 1
I posti che sono gli unici enablers di una sola transizione sono: I posti che sono gli unici enablers di una sola transizione sono:
| M0, M1, M3, R1, R2, R3, FreeChoice, S1ₐ, S1_{b}, S3 | M0, M1, M3, R1, R2, R3, FreeChoice, S1ₐ, S1_{b}, S3
Gli invarianti lineari dei marking diventano: Gli invarianti lineari dei marking diventano:
| m[S0] + m[S2_a] = 1 | m[S0] + m[S2_a] = 1
| m[S0] + m[S2_{b}] = 1 | m[S0] + m[S2_{b}] = 1
| m[R0] = 1 | m[R0] = 1
| m[M2] = 1 | m[M2] = 1
| m[S2_a] + m[P0] + m[P1] + m[Risultato] = 1 | m[S2_a] + m[P0] + m[P1] + m[Risultato] = 1
| m[S2_{b}] m[P0] + m[P1] + m[Risultato] = 1 | m[S2_{b}] m[P0] + m[P1] + m[Risultato] = 1
Dati i marking in R0 e M2, per far si` che /Inizio_Servizio_R/, Dati i marking in R0 e M2, per far si` che //Inizio\under{}Servizio/_R/,
/Attesa_Elaborazione/, /Fine_Servizioₛ/ e /Inizio_Servizioₛ/ non vengano abilitati: //Attesa\under{}Elaborazione//, //Fine\under{}Servizio/ₛ/ e //Inizio\under{}Servizio/ₛ/ non vengano abilitati:
| m[P0] = 0 | m[P0] = 0
| m[Risultato] = 0 | m[Risultato] = 0
| m[S2ₐ] + m[S2_{b}] ≤ 1 | m[S2ₐ] + m[S2_{b}] ≤ 1
| m[P1] + m[S0] ≤ 1 | m[P1] + m[S0] ≤ 1
Il sistema si riduce a: Il sistema si riduce a:
| m[S0] + m[S2_a]= 1 | m[S0] + m[S2_a]= 1
| m[S0] + m[S2_{b}] = 1 | m[S0] + m[S2_{b}] = 1
| m[S2_a] + m[P1] = 1 | m[S2_a] + m[P1] = 1
| m[S2_{b}] + m[P1] = 1 | m[S2_{b}] + m[P1] = 1
| m[S2ₐ] + m[S2_{b}] ≤ 1 | m[S2ₐ] + m[S2_{b}] ≤ 1
| m[P1] + m[S0] ≤ 1 | m[P1] + m[S0] ≤ 1
che non puo` essere soddisfatto per la legge di conservazione dei token. che non puo` essere soddisfatto per la legge di conservazione dei token.
* Rete C * Rete C
@ -257,13 +269,13 @@ liberamente dai master.
La figura rappresenta la rete di Petri P/T dell'esercizio C. Il master La figura rappresenta la rete di Petri P/T dell'esercizio C. Il master
è modellato dai posti M0, M1, M2, M3 e dalle transizioni è modellato dai posti M0, M1, M2, M3 e dalle transizioni
Azione_Locale, Richiesta_Servizio, Attesa_Elaborazione e Reset_M Azione_Locale, /Richiesta\under{}Servizio/, /Attesa\under{}Elaborazione/ e /Reset\under{}M/
Lo slave di tipo 1 è modellato dai posti S0, S1_a, S1_b, S2_a, S2_b e Lo slave di tipo 1 è modellato dai posti S0, S1_a, S1_b, S2_a, S2_b e
S3 e dalle transizioni Inizio_Servizio, Azione_Locale_Sa, S3 e dalle transizioni /Inizio\under{}Servizio/, /Azione\under{}Locale\under{}S_a/,
Azione_Locale_Sb, Fine_Servizio e Reset_S (il secondo master e` una /Azione\under{}Locale\under{}S_b/, /Fine\under{}Servizio/ e /Reset\under{}S/ (il secondo master e` una
copia del primo). copia del primo).
Lo slave di tipo 2 è modellato dai posti R0, R1_a, R1_b, R2_a, R2_b e Lo slave di tipo 2 è modellato dai posti R0, R1_a, R1_b, R2_a, R2_b e
R3 e dalle transizioni Inizio_Servizio_R, Azione_Locale_R, Fine_Servizio e Reset_R. R3 e dalle transizioni /Inizio\under{}Servizio/_R, Azione_Locale_R, /Fine\under{}Servizio/ e Reset_R.
La richiesta del servizio La richiesta del servizio
verso lo slave scelto e` gestita attraverso due buffer, posti verso lo slave scelto e` gestita attraverso due buffer, posti
FreeChoice e Risultato. FreeChoice e Risultato.
@ -289,56 +301,54 @@ Dato che la reteC e` interamente coperta dagli P-semiflussi, possiamo
affermare che la rete sia bounded. affermare che la rete sia bounded.
Gli P-semiflussi ci permettono di ricavare i seguenti invarianti Gli P-semiflussi ci permettono di ricavare i seguenti invarianti
lineari relativi ai marking /m/: lineari relativi ai marking /m/:
| m[S0] + m[S1ₐ] + m[S2ₐ] + m[S3] = 1 | • m[S0] + m[S1ₐ] + m[S2ₐ] + m[S3] = 1
| m[S0] + m[S1_{b}] + m[S2_{b}] + m[S3] = 1 | • m[S0] + m[S1_{b}] + m[S2_{b}] + m[S3] = 1
| m[R0] + m[R1] + m[R2] + m[R3] = 1 | • m[R0] + m[R1] + m[R2] + m[R3] = 1
| m[M0] + m[M1] + m[M2] + m[M3] = 1 | • m[M0] + m[M1] + m[M2] + m[M3] = 1
| m[copy_M0] + m[copy_M1] + m[copy_M2] + m[copy_M3] = 1 | • m[copy_M0] + m[copy_M1] + m[copy_M2] + m[copy_M3] = 1
\[ | • m[S1ₐ] + m[S2ₐ] + m[R1] + m[R2] + m[M0] +
m[S1ₐ] + m[S2ₐ] + m[R1] + m[R2] + m[M0] + m[M1] + m[M3] + m[Freechoice] + m[P0] + m[P1] + | \space\space m[M1] + m[M3] + m[Freechoice] + m[P0] + m[P1] +
m[Risultato] + m[copy_M0] + m[copy_M1] + m[copy_M3] = 1 | \space\space m[Risultato] + m[copy_M0] + m[copy_M1] + m[copy_M3] = 1
\] | • m[S1_{b}] + m[S2_{b}] + m[R1] + m[R2] + m[M0] +
\[ | \space\space m[M1] + m[M3] + m[Freechoice] + m[P0] + m[P1] +
m[S1_{b}] + m[S2_{b}] + m[R1] + m[R2] + m[M0] + m[M1] + m[M3] + m[Freechoice] + m[P0] + m[P1] + | \space\space m[Risultato] + m[copy_M0] + m[copy_M1] + m[copy_M3] = 1
m[Risultato] + m[copy_M0] + m[copy_M1] + m[copy_M3] = 1
\]
Gli spazi /enablers/ di una sola transizione sono i seguenti: Gli spazi /enablers/ di una sola transizione sono i seguenti:
| R1, R2, R3, S1ₐ, S1_{b}, S3, Risultato, M0, M1, M3, copy_M0, copy_M1, copy_M3, FreeChoice | R1, R2, R3, S1ₐ, S1_{b}, S3, Risultato, M0, M1, M3, copy_M0, copy_M1, copy_M3, FreeChoice
il sistema precedente diventa: il sistema precedente diventa:
| m[S0] + m[S2ₐ] = 1 | m[S0] + m[S2ₐ] = 1
| m[S0] + m[S2_{b}] = 1 | m[S0] + m[S2_{b}] = 1
| m[R0] = 1 | m[R0] = 1
| m[M2] = 1 | m[M2] = 1
| m[copy_M2] = 1 | m[copy_M2] = 1
| m[S2_{b}] + m[P0] + m[P1] = 1 | m[S2_{b}] + m[P0] + m[P1] = 1
| m[S2_{a}] + m[P0] + m[P1] = 1 | m[S2_{a}] + m[P0] + m[P1] = 1
Dati i marking in R0 e M2 e copy_M2, per far si` che /Inizio_Servizio_R/, Dati i marking in R0 e M2 e copy_M2, per far si` che //Inizio\under{}Servizio/_R/,
/Attesa_Elaborazione/, /copy_Attesa_Elaborazione/, /Fine_Servizioₛ/ e /Inizio_Servizioₛ/ non vengano abilitati: //Attesa\under{}Elaborazione//, /copy_/Attesa\under{}Elaborazione//, //Fine\under{}Servizio/ₛ/ e //Inizio\under{}Servizio/ₛ/ non vengano abilitati:
| m[P0] = 0 | m[P0] = 0
| m[Risultato] = 0 | m[Risultato] = 0
| m[S2ₐ] + m[S2_{b}] ≤ 1 | m[S2ₐ] + m[S2_{b}] ≤ 1
| m[P1] + m[S0] ≤ 1 | m[P1] + m[S0] ≤ 1
Il sistema si riduce allo stesso della precedente rete B: Il sistema si riduce allo stesso della precedente rete B:
| m[S0] + m[S2ₐ] = 1 | m[S0] + m[S2ₐ] = 1
| m[S0] + m[S2_{b}] = 1 | m[S0] + m[S2_{b}] = 1
| m[S2_{b}] + m[P1] = 1 | m[S2_{b}] + m[P1] = 1
| m[S2_{a}] + m[P1] = 1 | m[S2_{a}] + m[P1] = 1
| m[S2ₐ] + m[S2_{b}] ≤ 1 | m[S2ₐ] + m[S2_{b}] ≤ 1
| m[P1] + m[S0] ≤ 1 | m[P1] + m[S0] ≤ 1
e non puo` essere soddisfatto per la legge di conservazione dei token. e non puo` essere soddisfatto per la legge di conservazione dei token.
Gli T-invarianti sono i seguenti: Gli T-invarianti sono i seguenti:
- Inizio_Servizioᵣ + Azione_Locale + Fine_Servizioᵣ + T3 + - Inizio\under{}Servizioᵣ + Azione\under{}Locale + Fine\under{}Servizioᵣ + T3 +
azione_localeₘ + Richiesta_Servizio + Attesa_Elaborazione + Reset_M + Scelta₁ azione\under{}localeₘ + Richiesta\under{}Servizio + Attesa\under{}Elaborazione + Reset\under{}M + Scelta₁
- Inizio_Servizioₛ + Azione_Locale_{sa} + Azione_Locale_{sb} + Fine_Servizioₛ + T3 + - Inizio\under{}Servizioₛ + Azione\under{}Locale_{sa} + Azione\under{}Locale_{sb} + Fine\under{}Servizioₛ + T3 +
azione_localeₘ + Richiesta_Servizio + Attesa_Elaborazione + azione\under{}localeₘ + Richiesta\under{}Servizio + Attesa\under{}Elaborazione +
Reset_M + Scelta₁ Reset\under{}M + Scelta₁
- Inizio_Servizioᵣ + Azione_Locale + Fine_Servizioᵣ + T3 + Scelta₂ + - Inizio\under{}Servizioᵣ + Azione\under{}Locale + Fine\under{}Servizioᵣ + T3 + Scelta₂ +
copyₐzione_localeₘ + copy_Richiesta_Servizio + copyₐzione\under{}localeₘ + copy\under{}Richiesta\under{}Servizio +
copy_Attesa_Elaborazione + copy_Resetₘ copy\under{}Attesa\under{}Elaborazione + copy\under{}Resetₘ
- Inizio_Servizioₛ + Azione_Locale_{sa} + Azione_Locale_{sb} + - Inizio\under{}Servizioₛ + Azione\under{}Locale_{sa} + Azione\under{}Locale_{sb} +
Fine_Servizioₛ + Reset + Scelta₁ + copy_azione_localeₘ + Fine\under{}Servizioₛ + Reset + Scelta₁ + copy\under{}azione\under{}localeₘ +
copy_Richiesta_Servizio + copy_Attesa_Elaborazione + copy_Resetₘ copy\under{}Richiesta\under{}Servizio + copy\under{}Attesa\under{}Elaborazione + copy\under{}Resetₘ
Come nella rete B, in assenza di fairness non possiamo rispettare la Come nella rete B, in assenza di fairness non possiamo rispettare la
condizione di liveness e c'e` possibilita` di starvation. condizione di liveness e c'e` possibilita` di starvation.
@ -356,16 +366,17 @@ Tramite GreatSPN possiamo calcolare gli T- e P- semiflussi
[[./semiflowsDT.jpg]] [[./semiflowsDT.jpg]]
#+CAPTION: P-semiflows #+CAPTION: P-semiflows
[[./semiflowsDP.jpg]] [[./semiflowsDP.jpg]]
\clearpage
Gli P-invarianti sono i seguenti: Gli P-invarianti sono i seguenti:
- S0 + S1ₐ + S2ₐ + S3 | • S0 + S1ₐ + S2ₐ + S3
- S0 + S1_{b} + S2_{b} + S3 | • S0 + S1_{b} + S2_{b} + S3
- R0 + R1 + R2 + R3 | • R0 + R1 + R2 + R3
- M0 + M1 + M2 + M3 | • M0 + M1 + M2 + M3
- S1ₐ + S2ₐ + M0 + M1 + M3 + Bufferₛ + Risultato | • S1ₐ + S2ₐ + M0 + M1 + M3 + Bufferₛ + Risultato
- S1_{b} + S2_{b} + M0 + M1 + M3 + Bufferₛ + Risultato | • S1_{b} + S2_{b} + M0 + M1 + M3 + Bufferₛ + Risultato
- M0₂ + M1₂ + M3₂ | • M0₂ + M1₂ + M3₂
- R1 + R2 + M0₂ + M1₂ + M3₂ + Buffer₂ + Risultato₂ | • R1 + R2 + M0₂ + M1₂ + M3₂ + Buffer₂ + Risultato₂
Ai fini della dimostrazione dell'assenza di deadlock, possiamo notare Ai fini della dimostrazione dell'assenza di deadlock, possiamo notare
che lo slave di tipo 2 e` equivalente allo slave di tipo 1 se che lo slave di tipo 2 e` equivalente allo slave di tipo 1 se
si applicano due riduzioni alla rete (vengono fusi in un unico posto si applicano due riduzioni alla rete (vengono fusi in un unico posto
@ -373,11 +384,11 @@ S1ₐ-S2ₐ e S1_{b}-S2_{b}, poi eliminata la fork).
Inoltre i master sono indipendenti fra di loro e ciascuno rispetta l'assenza Inoltre i master sono indipendenti fra di loro e ciascuno rispetta l'assenza
di deadlock come gia` dimostrato nella rete A. di deadlock come gia` dimostrato nella rete A.
Gli T-invarianti sono i seguenti: Gli T-invarianti sono i seguenti:
- Inizio_Servizioₛ + azione_locale_{sa} + azione_locale_{sb} + - Inizio\under{}Servizioₛ + azione_locale_{sa} + azione_locale_{sb} +
Fine_Servizioₛ + Reset + azione_localeₘ + Richiesta_Servizio + Fine\under{}Servizioₛ + Reset + azione_localeₘ + Richiesta\under{}Servizio +
Attesa_Elaborazione + Resetₘ Attesa\under{}Elaborazione + Resetₘ
- Inizio_Servizioᵣ + Azione_locale + Fine_Servizioᵣ + T3 - Inizio\under{}Servizioᵣ + Azione\under{}locale + Fine\under{}Servizioᵣ + T3
azione_locale_{m2} + Richiesta_Servizio₂ + Attesa_Elaborazione₂ + azione\under{}locale_{m2} + Richiesta\under{}Servizio₂ + Attesa\under{}Elaborazione₂ +
Reset_{m2} Reset_{m2}
Come nella rete B, in assenza di fairness non possiamo rispettare la Come nella rete B, in assenza di fairness non possiamo rispettare la
condizione di liveness e c'e` possibilita` di starvation. condizione di liveness e c'e` possibilita` di starvation.
@ -389,7 +400,7 @@ Di seguito vengono mostrati i decision diagram usando per le
assegnazioni i seguenti algoritmi: assegnazioni i seguenti algoritmi:
- Sloan: un algoritmo di riduzione della banda di matrici sparse con - Sloan: un algoritmo di riduzione della banda di matrici sparse con
una buona performance una buona performance
- (advanced) Cuthill-McKee: un altro algoritmo di riduzione della banda di - Cuthill-McKee: un altro algoritmo di riduzione della banda di
matrici sparse matrici sparse
- Tovchigrechko e Noack: due algoritmo appositamente ideati per le reti - Tovchigrechko e Noack: due algoritmo appositamente ideati per le reti
di Petri, anch'essi con una buona performance di Petri, anch'essi con una buona performance
@ -400,16 +411,16 @@ assegnazioni i seguenti algoritmi:
in analisi ha restituito il risultato peggiore in analisi ha restituito il risultato peggiore
#+CAPTION: Algoritmo di Sloan #+CAPTION: Algoritmo di Sloan
[[./diagrammi/sloan.jpg]] \includepdf{./diagrammi/sloan.png}
#+CAPTION: Algoritmo di Cuthull-McKee #+CAPTION: Algoritmo di Cuthull-McKee
[[./diagrammi/mckee.jpg]] \includepdf{./diagrammi/mckee.png}
#+CAPTION: Algoritmo di Tovchigrechko #+CAPTION: Algoritmo di Tovchigrechko
[[./diagrammi/tovchi.jpg]] \includepdf{./diagrammi/tovchi.png}
#+CAPTION: Algoritmo di Noack #+CAPTION: Algoritmo di Noack
[[./diagrammi/noack.jpg]] \includepdf{./diagrammi/noack.png}
#+CAPTION: Algoritmo P-Chain #+CAPTION: Algoritmo P-Chain
[[./diagrammi/p-chain.jpg]] \includepdf{./diagrammi/p-chain.png}
#+CAPTION: Algoritmo Gradient-P #+CAPTION: Algoritmo Gradient-P
[[./diagrammi/gradient.jpg]] \includepdf{./diagrammi/gradient.png}
#+CAPTION: Algoritmo di Gibbs-Poole-Stockmeier #+CAPTION: Algoritmo di Gibbs-Poole-Stockmeier
[[./diagrammi/gibbs.jpg]] \includepdf{./diagrammi/gibbs.png}

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

View file

@ -1,3 +1,10 @@
#+TITLE: Esercizio di analisi degli algoritmi di mutua esclusione
#+AUTHOR: Francesco Mecca
#+EMAIL: me@francescomecca.eu
#+LANGUAGE: en
#+LaTeX_CLASS: article
#+LaTeX_HEADER: \linespread{1.25}
#+LaTeX_HEADER: \usepackage{pdfpages}
#+LaTeX_HEADER: \usepackage{comment} #+LaTeX_HEADER: \usepackage{comment}
#+LaTeX_HEADER: \usepackage{regexpatch,fancyvrb,xparse} #+LaTeX_HEADER: \usepackage{regexpatch,fancyvrb,xparse}
#+LaTeX_HEADER: \makeatletter #+LaTeX_HEADER: \makeatletter
@ -18,6 +25,11 @@
#+LaTeX_HEADER: breaklines=true #+LaTeX_HEADER: breaklines=true
#+LaTeX_HEADER: } #+LaTeX_HEADER: }
#+EXPORT_SELECT_TAGS: export
#+EXPORT_EXCLUDE_TAGS: noexport
#+OPTIONS: H:2 toc:nil \n:nil @:t ::t |:t ^:{} _:{} *:t TeX:t LaTeX:t
#+STARTUP: showall
\begin{comment} \begin{comment}
NOTA: nel caso di Ampararore, la formula: NOTA: nel caso di Ampararore, la formula:
| AG(EF(critical_P == 1)) | AG(EF(critical_P == 1))
@ -106,6 +118,7 @@ processi CSP.
| Q₂ ::= is_{q}.Q₃ | Q₂ ::= is_{q}.Q₃
| Q₃ ::= critical_{q}.Q₄ | Q₃ ::= critical_{q}.Q₄
| Q₄ ::= set_{p}.Q₁ | Q₄ ::= set_{p}.Q₁
Seguono il Reachability Graph costruito con GreatSPN e il Derivation Graph.
#+CAPTION: Reachability Graph 3.2 #+CAPTION: Reachability Graph 3.2
\includepdf{rg_3.2.jpg} \includepdf{rg_3.2.jpg}
@ -224,7 +237,7 @@ processi un'enumerazione di due stati e un contatore di turni intero
\hrulefill \hrulefill
\lstinputlisting[breaklines]{3.5.smv} \lstinputlisting[breaklines]{3.5.smv}
\hrulefill \hrulefill
\clearpage
** GreatSPN ** GreatSPN
Il codice utilizzato per le proprieta` CTL e` il seguente: Il codice utilizzato per le proprieta` CTL e` il seguente:
#+BEGIN_SRC #+BEGIN_SRC
@ -233,7 +246,7 @@ AG ((#Wait_P==1 || #Await_Q == 1) -> AF (#Done_P == 1 || #Done_Q == 1)) = false
AG (#Await_P==1 -> AF (#Done_P == 1)) = false AG (#Await_P==1 -> AF (#Done_P == 1)) = false
#+END_SRC #+END_SRC
#+CAPTION: Rete 3.5 #+CAPTION: Rete 3.5
\includepdf{3.5.jpg} [[./3.5.jpg]]
** Risultati ** Risultati
Nella tabella mostriamo i risultati ottenuti Nella tabella mostriamo i risultati ottenuti
@ -350,6 +363,7 @@ nodi ed e` equivalente al Reachability Graph.
| Q₃ ::= setTrue_{q}.Q₄ | Q₃ ::= setTrue_{q}.Q₄
| Q₄ ::= critical_{q}.Q₅ | Q₄ ::= critical_{q}.Q₅
| Q₅ ::= setFalse_{q}.Q₁ | Q₅ ::= setFalse_{q}.Q₁
Seguono il Reachability Graph costruito con GreatSPN e il Derivation Graph.
#+CAPTION: Reachability Graph 3.6 #+CAPTION: Reachability Graph 3.6
@ -423,8 +437,8 @@ risulta rispettata.
Ancora meglio, piuttosto che rimuovere una transizione possibile, Ancora meglio, piuttosto che rimuovere una transizione possibile,
possiamo restringere la verifica dell'assenza di deadlock alla possiamo restringere la verifica dell'assenza di deadlock alla
seguente formula CTL seguente formula CTL
| AG (wₚ → EF (cₚ || c_{q})) | AG (wₚ → EF (cₚ \vert{}\vert{} c_{q}))
| AG(#await_P == 1 -> EF(#critical_Q==1 || #critical_P == 1)) | AG(#await_P\space== 1 -> EF(#critical_Q==1 \vert{}\vert{} #critical_P == 1))
che risulta rispettata. che risulta rispettata.
L'assenza di starvation individuale non e` rispettata ne` in NuSmv ne` in L'assenza di starvation individuale non e` rispettata ne` in NuSmv ne` in
GreatSPN in quanto e` possibile che uno dei due processi continui ad GreatSPN in quanto e` possibile che uno dei due processi continui ad
@ -491,9 +505,11 @@ while true:
#+END_SRC #+END_SRC
** NuSMV ** NuSMV
Si e` deciso di modellare l'algoritmo allo stesso modo del precedente. Si e` deciso di modellare l'algoritmo allo stesso modo del precedente.
\hrulefill \hrulefill
\lstinputlisting[breaklines]{3.8.smv} \lstinputlisting[breaklines]{3.8.smv}
\hrulefill \hrulefill
\clearpage
** GreatSPN ** GreatSPN
Il codice utilizzato per le proprieta` CTL e` il seguente: Il codice utilizzato per le proprieta` CTL e` il seguente:
#+BEGIN_SRC #+BEGIN_SRC
@ -509,7 +525,7 @@ AG(#await_P == 1 -> EF(#critical_Q==1 || #critical_P == 1))
#+END_SRC #+END_SRC
che conferma la presenza di deadlock causata dalle due variabili booleane. che conferma la presenza di deadlock causata dalle due variabili booleane.
#+CAPTION: Rete 3.8 #+CAPTION: Rete 3.8
\includepdf{3.8.jpg} [[./3.8.jpg]]
** Risultati ** Risultati
Nella tabella mostriamo i risultati ottenuti Nella tabella mostriamo i risultati ottenuti
| | NuSMV | GreatSPN | | | NuSMV | GreatSPN |
@ -926,13 +942,13 @@ Ci aspettiamo che come in precedenza ci sia deadlock perche` viene
data ai processi la possibilita` di rimanere su /local/. data ai processi la possibilita` di rimanere su /local/.
Forzando i processi a fare del progresso dallo stato Forzando i processi a fare del progresso dallo stato
/local/, allora la formula CTL /local/, allora la formula CTL
| AG((lₚ || l_{q}) → AF(cₚc_{q}) | AG((lₚ \vert{}\vert{} l_{q}) → AF(cₚc_{q})
risulta rispettata. risulta rispettata.
Ancora meglio, piuttosto che rimuovere una transizione possibile, Ancora meglio, piuttosto che rimuovere una transizione possibile,
possiamo restringere la verifica dell'assenza di deadlock alla possiamo restringere la verifica dell'assenza di deadlock alla
seguente formula CTL seguente formula CTL
| AG (wₚ → EF (cₚ || c_{q})) | AG (wₚ → EF (cₚ \vert{}\vert{} c_{q}))
| AG(#await_P == 1 -> EF(#critical_Q==1 || #critical_P == 1)) | AG(#await_P\space== 1 -> EF(#critical_Q==1 \vert{}\vert{} #critical_P == 1))
che risulta rispettata. che risulta rispettata.
C'e` possibilita` di starvation individuale perche` a differenza di C'e` possibilita` di starvation individuale perche` a differenza di

Binary file not shown.

View file

@ -1,5 +1,16 @@
#+TITLE: Esercizio Timed Automata
#+AUTHOR: Francesco Mecca
#+EMAIL: me@francescomecca.eu
#+LANGUAGE: en
#+LaTeX_CLASS: article
#+LaTeX_HEADER: \linespread{1.25}
#+LaTeX_HEADER: \usepackage{pdfpages} #+LaTeX_HEADER: \usepackage{pdfpages}
#+LaTeX_HEADER: \usepackage{comment} #+LaTeX_HEADER: \usepackage{comment}
#+EXPORT_SELECT_TAGS: export
#+EXPORT_EXCLUDE_TAGS: noexport
#+OPTIONS: H:2 toc:nil \n:nil @:t ::t |:t ^:{} _:{} *:t TeX:t LaTeX:t
#+STARTUP: showall
* Modello A * Modello A
Sono stati usati tre template per rappresentare un sender, un link wd Sono stati usati tre template per rappresentare un sender, un link wd
un receiver un receiver
@ -11,8 +22,8 @@ un receiver
Lo stato iniziale dell'automata e` /wait/ che simula l'attesa Lo stato iniziale dell'automata e` /wait/ che simula l'attesa
dell'arrivo di un pacchetto che viene processato nell'intervallo [1;2] dell'arrivo di un pacchetto che viene processato nell'intervallo [1;2]
del clock /sc/. del clock /sc/.
Lo stato successivo e` /send_pkg/ che invia il pacchetto sul canale di Lo stato successivo e` /send\under{}pkg/ che invia il pacchetto sul canale di
sincronizzazione urgente /ML/. Il sender passa allo stato /wait_ack/ sincronizzazione urgente /ML/. Il sender passa allo stato /wait\under{}ack/
che simula l'attesa di un pacchetto sul canale di sincronizzazione che simula l'attesa di un pacchetto sul canale di sincronizzazione
urgente /LM/ e resetta il clock /sc/. urgente /LM/ e resetta il clock /sc/.
Viene simulata la verifica dell'ack in un intervallo di tempo [2;4] e Viene simulata la verifica dell'ack in un intervallo di tempo [2;4] e
@ -24,9 +35,9 @@ successivamente l'automa torna allo stato iniziale resettando il clock
Il receiver e` simmetrico al sender. Dallo stato iniziale di /wait/ Il receiver e` simmetrico al sender. Dallo stato iniziale di /wait/
viene simulato l'arrivo di un pacchetto sul canale di sincronizzazione viene simulato l'arrivo di un pacchetto sul canale di sincronizzazione
urgente /LR/ che permette al receiver di resettare il clock /rc/ e urgente /LR/ che permette al receiver di resettare il clock /rc/ e
avanzare nello stato /recv_pkg/, simulando la preparazione del avanzare nello stato /recv\under{}pkg/, simulando la preparazione del
pacchetto in un intervallo di tempo [2;4]. pacchetto in un intervallo di tempo [2;4].
La transizione dallo stato /done_pkg/ a /send_ack/ simula la generazione La transizione dallo stato /done\under{}pkg/ a /send\under{}ack/ simula la generazione
di un pacchetto di ack in un intervallo di tempo [2;4] ed tornare allo di un pacchetto di ack in un intervallo di tempo [2;4] ed tornare allo
stato iniziale dopo aver inviato il pacchetto nel canale di stato iniziale dopo aver inviato il pacchetto nel canale di
sincronizzazione urgente /RL/. sincronizzazione urgente /RL/.
@ -35,12 +46,12 @@ sincronizzazione urgente /RL/.
** Link ** Link
Il link e` modellato come un canale perfetto senza perdite. Lo stato Il link e` modellato come un canale perfetto senza perdite. Lo stato
interno /idle/ simula l'attesa di un pacchetto da parte del receiver o interno /idle/ simula l'attesa di un pacchetto da parte del receiver o
del sender. Lo stato /received_pkg/ simula l'arrivo di un pacchetto da del sender. Lo stato /received\under{}pkg/ simula l'arrivo di un pacchetto da
parte del sender sul canale /ML/ che viene processato e spedito al parte del sender sul canale /ML/ che viene processato e spedito al
receiver sul canale /LR/. Simmetricamente le stesse operazioni di receiver sul canale /LR/. Simmetricamente le stesse operazioni di
attesa, processing e invio avvengono con i pacchetti di ack di cui si attesa, processing e invio avvengono con i pacchetti di ack di cui si
simula l'arrivo nello stato /received_ack/ dal canale di trasmissione simula l'arrivo nello stato /received\under{}ack/ dal canale di trasmissione
/RL/ e l'invio verso il sender dallo stato /resend_ack/ attraverso il /RL/ e l'invio verso il sender dallo stato /resend\under{}ack/ attraverso il
canale di trasmissione /LM/. Per il processing dei pacchetti canale di trasmissione /LM/. Per il processing dei pacchetti
l'intervallo di tempo e` sempre [2;4]. l'intervallo di tempo e` sempre [2;4].
#+CAPTION: Link protocollo A #+CAPTION: Link protocollo A
@ -51,12 +62,12 @@ Sono state verificate tre proprieta` TCTL sul modello:
| A[] (not deadlock) | A[] (not deadlock)
che viene rispettata e indica che la traccia del sistema e` infinita che viene rispettata e indica che la traccia del sistema e` infinita
- Il sender ricevera` sempre un ack - Il sender ricevera` sempre un ack
| AF sender.received_ack | AF sender.received\under{}ack
| A<> sender.received_ack | A<> sender.received\under{}ack
la proprieta` risulta vera in quanto il link non ha perdite. la proprieta` risulta vera in quanto il link non ha perdite.
- Il receiver ricevera` sempre un pacchetto - Il receiver ricevera` sempre un pacchetto
| AF receiver.recv_pkg | AF receiver.recv\under{}pkg
| A<> receiver.recv_pkg | A<> receiver.recv\under{}pkg
e` una proprieta` rispettata in quando non ci sono constraint sul e` una proprieta` rispettata in quando non ci sono constraint sul
tempo di attesa del pacchetto. tempo di attesa del pacchetto.
** Tempo attesa ** Tempo attesa
@ -71,14 +82,14 @@ la possibilita` di perdita o corruzione di un pacchetto.
** Link ** Link
Come si denota dall'immagine il link e` simile a quello del modello A Come si denota dall'immagine il link e` simile a quello del modello A
eccezion fatta per la possibilita` di procedere non eccezion fatta per la possibilita` di procedere non
deterministicamente dagli spazi /received_pkg/ e /received_ack/ verso deterministicamente dagli spazi /received\under{}pkg/ e /received\under{}ack/ verso
/loss/ /loss/
#+CAPTION: Link protocollo B #+CAPTION: Link protocollo B
[[./link_B.jpg]] [[./link_B.jpg]]
Mostriamo un trace in cui il link perde un pacchetto di ack inviato Mostriamo un trace in cui il link perde un pacchetto di ack inviato
dal sender e il sistema va in deadlock. dal sender e il sistema va in deadlock.
Dalla figura possiamo notare la transizione che simula la perdita, Dalla figura possiamo notare la transizione che simula la perdita,
ovvero l'arco /received_ack/ → /loss/. ovvero l'arco /received\under{}ack/ → /loss/.
#+CAPTION: Trace con deadlock #+CAPTION: Trace con deadlock
[[./trace_B.jpg]] [[./trace_B.jpg]]
\includepdf{trace_B2.jpg} \includepdf{trace_B2.jpg}
@ -88,15 +99,15 @@ Sono state verificate quattro proprieta` TCTL sul modello:
| A[] (not deadlock) | A[] (not deadlock)
che non e` rispettata che non e` rispettata
- Il sender compiera` sempre del progresso - Il sender compiera` sempre del progresso
| sender.waitACK > (sender.receivedACK) | sender.wait_ack --> (sender.received_ack)
la proprieta` non risulta vera in quanto il link ha perdite la proprieta` non risulta vera in quanto il link ha perdite
- Il receiver ricevera` sempre un pacchetto - Il receiver ricevera` sempre un pacchetto
| AF receiver.recv_pkg | AF receiver.recv\under{}pkg
| A<> receiver.recv_pkg | A<> receiver.recv\under{}pkg
che come per la proprieta` precedente non puo` risultare vera che come per la proprieta` precedente non puo` risultare vera
- Il receiver puo` ricevere un pacchetto - Il receiver puo` ricevere un pacchetto
| EF receiver.recv_pkg | EF receiver.recv\under{}pkg
| E<> receiver.recv_pkg | E<> receiver.recv\under{}pkg
la proprieta` risulta vera perche` il link in alcuni path riesce ad la proprieta` risulta vera perche` il link in alcuni path riesce ad
inviare il pacchetto (non avvengono perdite sul canale) inviare il pacchetto (non avvengono perdite sul canale)
** Tempo attesa ** Tempo attesa
@ -114,7 +125,7 @@ tenere traccia dei pacchetti inviati e degli ack ricevuti.
** Receiver ** Receiver
Di seguito viene mostrato il receiver del modello C. Rispetto al Di seguito viene mostrato il receiver del modello C. Rispetto al
Modello B il receiver utilizza una flag binaria locale /r_frame/ per tenere Modello B il receiver utilizza una flag binaria locale /r\under{}frame/ per tenere
traccia degli pacchetti gia` ricevuti e processati. traccia degli pacchetti gia` ricevuti e processati.
#+CAPTION: Receiver protocollo C #+CAPTION: Receiver protocollo C
[[./receiver_C.jpg]] [[./receiver_C.jpg]]
@ -124,7 +135,7 @@ escludendo per lo stato iniziale, in modo da poter processare nella
parte destra i frame di tipo 0 e nella parte sinistra i frame di parte destra i frame di tipo 0 e nella parte sinistra i frame di
tipo 1. tipo 1.
Inoltre sono stati aggiunti due timer che, nel momento in cui Inoltre sono stati aggiunti due timer che, nel momento in cui
l'automa e` fermo su /wait_ack/ allo scadere del timeout, permettono l'automa e` fermo su /wait\under{}ack/ allo scadere del timeout, permettono
di spostarsi nello spazio /lost/ e riprovare l'invio del pacchetto. di spostarsi nello spazio /lost/ e riprovare l'invio del pacchetto.
Si nota subito che i due timer sono indipendenti l'uno dall'altro e vi Si nota subito che i due timer sono indipendenti l'uno dall'altro e vi
e` la possibilita` di modellare i sender senza duplicare il numero di e` la possibilita` di modellare i sender senza duplicare il numero di
@ -139,37 +150,37 @@ maggiore del piu` grande fra i seguenti valore:
- il massimo tempo necessario all'invio di un pacchetto che il sender ha gia` - il massimo tempo necessario all'invio di un pacchetto che il sender ha gia`
processato processato
Se non si rispetta questo constraint il sistema va in deadlock. Se non si rispetta questo constraint il sistema va in deadlock.
Nel modello utilizzato lo spazio /is_dup/ e /done_pkg/ del receiver Nel modello utilizzato lo spazio /is\under{}dup/ e /done\under{}pkg/ del receiver
hanno lo stesso invariante e il timeout /TOUT/ ha valore minimo 16. hanno lo stesso invariante e il timeout /TOUT/ ha valore minimo 16.
\begin{comment} \begin{comment}
Ho calcolato il timeout considerando i seguenti cammini Ho calcolato il timeout considerando i seguenti cammini
# Perdita per sender # Perdita per sender
Link: received_pkg -> resend_pkg = 4 Link: received\under{}pkg -> resend\under{}pkg = 4
Receiver: recv_pkg -> done_pkg = 4 Receiver: recv\under{}pkg -> done\under{}pkg = 4
Receiver: done_pkg -> send_ack = 4 Receiver: done\under{}pkg -> send\under{}ack = 4
Link: received_ack -> resend_ack = 4 Link: received\under{}ack -> resend\under{}ack = 4
# Perdita per receiver # Perdita per receiver
Link: received_pkg -> resend_pkg = 4 Link: received\under{}pkg -> resend\under{}pkg = 4
Receiver: recv_pkg -> is_dup = 4 Receiver: recv\under{}pkg -> is\under{}dup = 4
Receiver: is_dup -> send_ack = 4 Receiver: is\under{}dup -> send\under{}ack = 4
Link: received_ack -> resend_ack = 4 Link: received\under{}ack -> resend\under{}ack = 4
\end{comment} \end{comment}
** Proprieta` ** Proprieta`
Sono state verificate cinque proprieta` TCTL sul modello: Sono state verificate cinque proprieta` TCTL sul modello:
- In caso di perdita il sender o il receiver tentano nuovamente di - In caso di perdita il sender o il receiver tentano nuovamente di
inviare il pacchetto inviare il pacchetto
| link.loss --> (sender.send_pkg || sender.send_pkg1 || receiver.send_ack) | link.loss --> (sender.send\under{}pkg \vert{}\vert{} sender.send\under{}pkg1 \vert{}\vert{} receiver.send\under{}ack)
questa proprieta` e` rispttata. questa proprieta` e` rispttata.
- Assenza di deadlock - Assenza di deadlock
| A[] (not deadlock) | A[] (not deadlock)
questa proprieta` e` rispettata. questa proprieta` e` rispettata.
- Nonostante una perdita nel link, il sender o il receiver riceveranno - Nonostante una perdita nel link, il sender o il receiver riceveranno
il pacchetto il pacchetto
| link.loss --> (sender.send_pkg || receiver.send_ack) | link.loss --> (sender.send\under{}pkg \vert{}\vert{} receiver.send\under{}ack)
la proprieta` e` rispettata la proprieta` e` rispettata
- Il receiver ricevera` sempre un pacchetto - Il receiver ricevera` sempre un pacchetto
| sender.wait_ack || sender.wait_ack1 --> (sender.received_ack || sender.received_ack1) | sender.wait\under{}ack \vert{}\vert{} sender.wait\under{}ack1 --> (sender.received\under{}ack \vert{}\vert{} sender.received\under{}ack1)
questa proprieta` non risulta vera dato che ci possono essere delle questa proprieta` non risulta vera dato che ci possono essere delle
perdite nel canale perdite nel canale
- C'e` almeno un caso in cui l'ack ricevuto e` quello atteso - C'e` almeno un caso in cui l'ack ricevuto e` quello atteso

Binary file not shown.

View file

@ -0,0 +1,8 @@
all:
cd 1 && make
cd 2 && make
cd 2.b && make
cd 3 && make
cd 4 && make
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=relazione.pdf \
1/1.pdf 2/2.pdf 2.b/2.b.pdf 3/analisi.pdf 4/4.pdf

View file

@ -4,7 +4,7 @@ from sys import argv
allsymbols = json.load(open('/home/user/UNITO/anno3/vpc/consegne/conv/unicode-latex.json')) allsymbols = json.load(open('/home/user/UNITO/anno3/vpc/consegne/conv/unicode-latex.json'))
mysymbols = ['', '', '', '', '', '', '', '', '', 'ε', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'ʲ', '', 'π', 'α', 'β', '', 'σ', '', '', '', '', '', '', '', '', '', '', '', 'ˡ', '', '', '', '', '', '', '', '', '', '', '', '', 'Σ', '', '', '', 'τ', '', '', '', '', '' ] mysymbols = ['', '', '', '', '', '', '', '', '', 'ε', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'ʲ', '', 'π', 'α', 'β', '', 'σ', '', '', '', '', '', '', '', '', '', '', '', 'ˡ', '', '', '', '', '', '', '', '', '', '', '', '', 'Σ', '', '', '', 'τ', '', '', '', '', '', '' ]
extrasymbols = {'': '\in', extrasymbols = {'': '\in',
'': '\llbracket', '': '\llbracket',
'': r'\rrbracket', '': r'\rrbracket',

Binary file not shown.

View file

@ -1,6 +1,7 @@
* TODO VPC [16/20] * TODO VPC [16/21]
- [ ] Controlla good latex - [ ] Controlla good latex
- [ ] Uppaal muovi cartella file - [ ] Uppaal muovi cartella file
- [ ] Rimuovi "Contents" da ogni .org
- [X] chiedi della riduzione - [X] chiedi della riduzione
- [X] calcolo semiflussi come da mail - [X] calcolo semiflussi come da mail
- [X] chiedi dell'esame - [X] chiedi dell'esame
@ -20,14 +21,16 @@
- [ ] Vedi da relazioni procedure dimostrazione deadlock - [ ] Vedi da relazioni procedure dimostrazione deadlock
- [ ] Impara equivalenze come le spiega lei - [ ] Impara equivalenze come le spiega lei
- [ ] Formalizza algoritmo bisimulazione - [ ] Formalizza algoritmo bisimulazione
- [-] rete A, b, c, d [4/5] - [X] rete A, b, c, d [5/5]
- [X] Spiega p-t-semiflows analysis: deadlock e liveness, boundness - [X] Spiega p-t-semiflows analysis: deadlock e liveness, boundness
- [X] sulle slide, quando si chiede come deve decidere il master - [X] sulle slide, quando si chiede come deve decidere il master
- [X] Sistema screenshots di GSPN non tagliati - [X] Sistema screenshots di GSPN non tagliati
- [X] Controlla riduzione se hai fuso posti con archi uscenti - [X] Controlla riduzione se hai fuso posti con archi uscenti
- [ ] Rifai la riduzione e controlla fusione con archi uscenti - [X] Rifai la riduzione e controlla fusione con archi uscenti
- [ ] chiedi Daniel riduzione
- [X] rete E, F -> Controlla sia finito - [X] rete E, F -> Controlla sia finito
- [X] Analisi [26/26] - [-] Analisi [26/27]
- [ ] clearpage su ultime immagini
- [X] Riduzione??? - [X] Riduzione???
- [X] Inverti S14 e S13 - [X] Inverti S14 e S13
- [X] Derivation graph errori [5/5] - [X] Derivation graph errori [5/5]