invio donatelli

This commit is contained in:
Francesco Mecca 2020-05-22 12:48:27 +02:00
parent dd69606455
commit 5ea1311075
10 changed files with 62 additions and 26 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -49,16 +49,11 @@ marcature.
| 13, 13 | 1135668 | 7123272 | | 13, 13 | 1135668 | 7123272 |
| 14, 14 | 1841100 | 11802420 | | 14, 14 | 1841100 | 11802420 |
| 15, 15 | 2903124 | 18973020 | | 15, 15 | 2903124 | 18973020 |
** Considerazioni su Fork/Join ** Considerazioni su Fork/Join
Il modello non garantisce che avvenga il join di due processi dello Il modello non garantisce che avvenga il join di due processi dello
stesso padre quando la marcatura degli slave e` maggiore di 2. stesso padre quando la marcatura degli slave e` maggiore di 2.
Si puo` garantire che avvenga il join di due processi forkati dallo Si puo` garantire che avvenga il join di due processi forkati dallo
stesso padre nei seguenti modi: stesso padre attraverso differenti strutture slaves o usando reti WN.
- attraverso differenti strutture slaves
- usando reti WN
** Riduzione ** Riduzione
Una rete di petri puo` essere ridotta usando le seguendi tecniche: Una rete di petri puo` essere ridotta usando le seguendi tecniche:
- fusione - fusione

View file

@ -85,6 +85,7 @@ while true:
Si e` deciso di modellare l'algoritmo usando per ognuno dei due Si e` deciso di modellare l'algoritmo usando per ognuno dei due
processi un'enumerazione di 4 stati ed una variabile turno di tipo intero. processi un'enumerazione di 4 stati ed una variabile turno di tipo intero.
| state: {begin, wait, critical, done}; | state: {begin, wait, critical, done};
\hrulefill \hrulefill
\lstinputlisting[breaklines]{3.2.b.smv} \lstinputlisting[breaklines]{3.2.b.smv}
\hrulefill \hrulefill
@ -103,7 +104,7 @@ AG (#Q1==1 -> EF (#Q3 == 1))
Riportiamo il modello dell'algoritmo 3.2 secondo l'algebra dei Riportiamo il modello dell'algoritmo 3.2 secondo l'algebra dei
processi CSP. processi CSP.
| System = {(P₁ \vert{}\vert{} Q₁) \vert{}\vert{} Tₚ} \ttvar{/ }Sync | System = {(P₁ \vert{}\vert{} Q₁) \vert{}\vert{} Tₚ} \ttvar{/ }Sync
| S = {localₚ, local_{q}, criticalₚ, critical_{q}} | Act = {localₚ, local_{q}, criticalₚ, critical_{q}}
| Sync = {isₚ, is_{q}, setₚ, set_{q}} | Sync = {isₚ, is_{q}, setₚ, set_{q}}
| Tₚ ::= isₚ.Tₚ + setₚ.Tₚ + set_{q}.T_{q} | Tₚ ::= isₚ.Tₚ + setₚ.Tₚ + set_{q}.T_{q}
@ -139,8 +140,11 @@ Ne segue che anche l'assenza di starvation individuale non e`
garantita. garantita.
NuSMV conferma quanto detto mostrandoci un trace che fa da NuSMV conferma quanto detto mostrandoci un trace che fa da
controesempio alla formula CTL: controesempio alla formula CTL:
\hrulefill
#+BEGIN_SRC #+BEGIN_SRC
-- specification AG (p.state = wait -> AF (p.state = critical | q.state = critical)) is false -- specification
AG (p.state = wait -> AF (p.state = critical | q.state = critical)) is false
-- as demonstrated by the following execution sequence -- as demonstrated by the following execution sequence
Trace Description: CTL Counterexample Trace Description: CTL Counterexample
Trace Type: Counterexample Trace Type: Counterexample
@ -187,7 +191,9 @@ Trace Type: Counterexample
p.running = FALSE p.running = FALSE
-> State: 1.9 <- -> State: 1.9 <-
#+END_SRC #+END_SRC
Si vede che il processo q rimane nella fase begin e p, dopo essere \hrulefill
\clearpage
La traccia mostra che il processo q rimane nella fase begin e p, dopo essere
entrato nella regione critica una volta, rimane bloccato in begin. entrato nella regione critica una volta, rimane bloccato in begin.
Lo stesso trace mostra la possibilita` di starvation del processo. Lo stesso trace mostra la possibilita` di starvation del processo.
La rete modellata con GreatSPN ci conferma quanto visto con NuSMV. La rete modellata con GreatSPN ci conferma quanto visto con NuSMV.
@ -195,6 +201,8 @@ Inoltre il trace di GreatSPN ci mostra che non potendo forzare la
fairness del modello, i processi possono iterare indefinitamente fairness del modello, i processi possono iterare indefinitamente
nella transizione iniziale, impedendo quindi il progresso dell'altro nella transizione iniziale, impedendo quindi il progresso dell'altro
processo. processo.
\hrulefill
#+BEGIN_SRC #+BEGIN_SRC
Initial state is: P1(1), Turn_P(1), Q1(1) Initial state is: P1(1), Turn_P(1), Q1(1)
Initial state satisfies: E F (not ((not (Q1 = 1)) or (not E G (not (Q3 = 1))))). Initial state satisfies: E F (not ((not (Q1 = 1)) or (not E G (not (Q3 = 1))))).
@ -213,6 +221,8 @@ Initial state satisfies: E F (not ((not (Q1 = 1)) or (not E G (not (Q3 = 1))))).
1.1.R.2: loop back to state 1.1.R.1. 1.1.R.2: loop back to state 1.1.R.1.
#+END_SRC #+END_SRC
\hrulefill
\clearpage
Prendiamo in considerazione la seguente formula CTL Prendiamo in considerazione la seguente formula CTL
| AG (wₚ -> EF cₚ) | AG (wₚ -> EF cₚ)
Sia GreatSPN che NuSMV ci mostrano che il sistema modellato rispetta Sia GreatSPN che NuSMV ci mostrano che il sistema modellato rispetta
@ -234,6 +244,10 @@ while true:
Si e` deciso di modellare l'algoritmo usando per ognuno dei due Si e` deciso di modellare l'algoritmo usando per ognuno dei due
processi un'enumerazione di due stati e un contatore di turni intero processi un'enumerazione di due stati e un contatore di turni intero
| state: {await, done}; | state: {await, done};
Non si e` utilizzata la direttiva /process/ di NuSMV dato che un
automa a stati finiti e` sufficiente a dimostrare le proprieta` del
modello.
\hrulefill \hrulefill
\lstinputlisting[breaklines]{3.5.smv} \lstinputlisting[breaklines]{3.5.smv}
\hrulefill \hrulefill
@ -298,7 +312,6 @@ questa semplificazione.
p.state = await p.state = await
q.state = await q.state = await
-> State: 3.2 <- -> State: 3.2 <-
specification AG (q.state = await -> EF q.state = done) is true
#+END_SRC #+END_SRC
- Possibilita` di compiere progresso: - Possibilita` di compiere progresso:
#+BEGIN_SRC #+BEGIN_SRC
@ -323,6 +336,7 @@ processi usando 5 stati
\hrulefill \hrulefill
\lstinputlisting[breaklines]{3.6.b.smv} \lstinputlisting[breaklines]{3.6.b.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:
@ -381,6 +395,8 @@ Nella tabella mostriamo i risultati ottenuti
Il trace di NuSMV mostra che la mutua esclusione puo` non essere Il trace di NuSMV mostra che la mutua esclusione puo` non essere
rispettata dato che le due variabili /wantP/ e /wantQ/ possono essere rispettata dato che le due variabili /wantP/ e /wantQ/ possono essere
contemporaneamente false. contemporaneamente false.
\hrulefill
#+BEGIN_SRC #+BEGIN_SRC
-- specification AG (p.state != critical | q.state != critical) is false -- specification AG (p.state != critical | q.state != critical) is false
-- as demonstrated by the following execution sequence -- as demonstrated by the following execution sequence
@ -425,6 +441,8 @@ Trace Type: Counterexample
wantQ = TRUE wantQ = TRUE
q.state = critical q.state = critical
#+END_SRC #+END_SRC
\hrulefill
\clearpage
L'incoerenza del risultato dell'assenza di deadlock e` spiegabile dal L'incoerenza del risultato dell'assenza di deadlock e` spiegabile dal
fatto che nel caso di NuSMV non e` possibile che un processo rimanga fatto che nel caso di NuSMV non e` possibile che un processo rimanga
nel primo stato (/local/) per un tempo indefinito mentre nel caso di nel primo stato (/local/) per un tempo indefinito mentre nel caso di
@ -444,6 +462,8 @@ 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
accedere alla sezione critica senza permettere allaltro di fare lo accedere alla sezione critica senza permettere allaltro di fare lo
stesso. stesso.
\hrulefill
#+BEGIN_SRC #+BEGIN_SRC
-- specification AG (q.state = await -> AF q.state = critical) is false -- specification AG (q.state = await -> AF q.state = critical) is false
-- as demonstrated by the following execution sequence -- as demonstrated by the following execution sequence
@ -491,7 +511,8 @@ Trace Type: Counterexample
wantP = FALSE wantP = FALSE
p.state = local p.state = local
#+END_SRC #+END_SRC
\hrulefill
\clearpage
* Algoritmo 3.8 * Algoritmo 3.8
Due processi iterano all'infinito seguendo questo pseudocodice Due processi iterano all'infinito seguendo questo pseudocodice
@ -521,7 +542,7 @@ AG (#await_Q==1 -> AF (#critical_Q == 1))
Inoltre, per confermare alcune ipotesi, si e` testata anche la Inoltre, per confermare alcune ipotesi, si e` testata anche la
seguente formula CTL: seguente formula CTL:
#+BEGIN_SRC #+BEGIN_SRC
AG(#await_P == 1 -> EF(#critical_Q==1 || #critical_P == 1)) AG(#await_P == 1 -> EF(#critical_Q==1 \vert{}\vert{} #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
@ -539,6 +560,8 @@ conseguenza neanche la starvation individuale).
Di seguito riportiamo la traccia di NuSMV che mostra che il deadlock Di seguito riportiamo la traccia di NuSMV che mostra che il deadlock
avviene quando i progetti eseguono /setTrue/ nello stesso momento. avviene quando i progetti eseguono /setTrue/ nello stesso momento.
\hrulefill
#+BEGIN_SRC #+BEGIN_SRC
-- specification AG ((p.state = await | q.state = await) -> AF (p.state = critical | q.state = critical)) is false -- specification AG ((p.state = await | q.state = await) -> AF (p.state = critical | q.state = critical)) is false
-- as demonstrated by the following execution sequence -- as demonstrated by the following execution sequence
@ -601,9 +624,13 @@ Trace Type: Counterexample
p.running = FALSE p.running = FALSE
-> State: 1.10 <- -> State: 1.10 <-
#+END_SRC #+END_SRC
\hrulefill
\clearpage
Mostriamo invece il controesempio generato da GreatSPN che ci mostra Mostriamo invece il controesempio generato da GreatSPN che ci mostra
una condizione di starvation individuale, dove, come in precedenza, il una condizione di starvation individuale, dove, come in precedenza, il
processo Q rimane in /local_Q/. processo Q rimane in /local_Q/.
\hrulefill
#+BEGIN_SRC #+BEGIN_SRC
Generated counter-example: Generated counter-example:
==================================== Trace ==================================== ==================================== Trace ====================================
@ -636,7 +663,8 @@ Initial state satisfies:
3.1.R.2: loop back to state 3.1.R.1. 3.1.R.2: loop back to state 3.1.R.1.
#+END_SRC #+END_SRC
\hrulefill
\clearpage
* Algoritmo 3.9 * Algoritmo 3.9
Due processi iterano all'infinito seguendo questo pseudocodice Due processi iterano all'infinito seguendo questo pseudocodice
@ -661,9 +689,11 @@ Benche` non fosse necessario distinguere il set della variabile
booleana /wantP/, si e` preferito farlo in quanto l'enumerazione di booleana /wantP/, si e` preferito farlo in quanto l'enumerazione di
tutti gli stati possibili, come evidenziato dal codice che segue, non tutti gli stati possibili, come evidenziato dal codice che segue, non
risulta complesso. risulta complesso.
\hrulefill \hrulefill
\lstinputlisting[breaklines]{3.9.smv} \lstinputlisting[breaklines]{3.9.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
@ -695,6 +725,7 @@ la condizione di deadlock.
Viene riportato il trace di NuSMV che conferma questa ipotesi. Viene riportato il trace di NuSMV che conferma questa ipotesi.
GreatSPN fallisce per mancanza di RAM sulla macchina usata ma e` GreatSPN fallisce per mancanza di RAM sulla macchina usata ma e`
facile riprodurre il deadlock manualmente. facile riprodurre il deadlock manualmente.
\hrulefill
#+BEGIN_SRC #+BEGIN_SRC
-- specification AG ((p.state = setTrue | q.state = setTrue) -> AF (p.state = critical | q.state = critical)) is false -- specification AG ((p.state = setTrue | q.state = setTrue) -> AF (p.state = critical | q.state = critical)) is false
-- as demonstrated by the following execution sequence -- as demonstrated by the following execution sequence
@ -792,8 +823,12 @@ Trace Type: Counterexample
wantP = TRUE wantP = TRUE
p.state = resetFalse p.state = resetFalse
#+END_SRC #+END_SRC
\hrulefill
\clearpage
Di seguito il trace che conferma la presenza di starvation Di seguito il trace che conferma la presenza di starvation
individuale, sia in GreatSPN che NuSMV. individuale, sia in GreatSPN che NuSMV.
\hrulefill
#+BEGIN_SRC #+BEGIN_SRC
Generated counter-example: Generated counter-example:
==================================== Trace ==================================== ==================================== Trace ====================================
@ -820,6 +855,9 @@ Initial state satisfies:
2.1.R.2: loop back to state 2.1.R.1. 2.1.R.2: loop back to state 2.1.R.1.
#+END_SRC #+END_SRC
\hrulefill
\clearpage
\hrulefill
#+BEGIN_SRC #+BEGIN_SRC
-- specification AG (q.state = setTrue -> AF q.state = critical) is false -- specification AG (q.state = setTrue -> AF q.state = critical) is false
-- as demonstrated by the following execution sequence -- as demonstrated by the following execution sequence
@ -902,9 +940,10 @@ Trace Type: Counterexample
-> State: 3.13 <- -> State: 3.13 <-
p.state = setFalse p.state = setFalse
#+END_SRC #+END_SRC
\hrulefill
\clearpage
* Algoritmo di Dekker per la mutua esclusione * Algoritmo di Dekker per la mutua esclusione
Due processi iterano all'infinito seguendo questo pseudocodice Due processi iterano all'infinito seguendo questo pseudocodice
#+BEGIN_SRC #+BEGIN_SRC
while true: while true:
non-critical section non-critical section
@ -923,11 +962,13 @@ while true:
** NuSMV ** NuSMV
Si e` deciso di modellare l'algoritmo usando per ognuno dei due Si e` deciso di modellare l'algoritmo usando per ognuno dei due
processi usando 9 stati processi usando 9 stati
| state: {local, set_true, while, loop_set_false, await, loop_set_true, critical, switch_turn, set_false}; - state: {local, set_true, while, loop_set_false, await,
loop_set_true, critical, switch_turn, set_false};
\hrulefill \hrulefill
\lstinputlisting[breaklines]{dekker_WN.smv} \lstinputlisting[breaklines]{dekker_WN.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

Binary file not shown.

Binary file not shown.

View file

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

View file

@ -1,7 +1,7 @@
* TODO VPC [16/21] * TODO VPC [21/22]
- [ ] Controlla good latex - [X] Controlla good latex
- [ ] Uppaal muovi cartella file - [X] Uppaal muovi cartella file
- [ ] Rimuovi "Contents" da ogni .org - [X] 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
@ -21,16 +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
- [X] rete A, b, c, d [5/5] - [X] rete A, b, c, d [6/6]
- [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
- [X] Rifai la riduzione e controlla fusione con archi uscenti - [X] Rifai la riduzione e controlla fusione con archi uscenti
- [ ] chiedi Daniel riduzione - [X] chiedi Daniel riduzione
- [X] rete E, F -> Controlla sia finito - [X] rete E, F -> Controlla sia finito
- [-] Analisi [26/27] - [X] Analisi [27/27]
- [ ] clearpage su ultime immagini - [X] 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]
@ -73,7 +73,7 @@
- [X] CSP: che significa sync? - [X] CSP: che significa sync?
- [X] controlla esercizi nuovi - [X] controlla esercizi nuovi
- [X] Controlla bene e studia Symbolic Reachability Graph: perche` cosi` buono? - [X] Controlla bene e studia Symbolic Reachability Graph: perche` cosi` buono?
- [ ] Confrontare esercizi con Galla` - [X] Confrontare esercizi con Galla`
* Prog Mobile [2/5] * Prog Mobile [2/5]