Uppaal - Dipartimento di Informatica

Transcript

Uppaal - Dipartimento di Informatica
Contatti
e-mail: [email protected]
ufficio: Ca’ Vignal 2, primo piano, stanza 80
ricevimento: Giovedì, 11-12 oppure su appuntamento
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
1 / 29
Lezione 1: Uppaal
Laboratorio di Sistemi in Tempo Reale
Corso di Laurea in Informatica Multimediale
6 Novembre 2008
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
2 / 29
Outline
1
Una breve introduzione ad Uppaal
2
Il problema dei soldati
3
Un protocollo di mutua esclusione
4
Esercizio
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
3 / 29
U PPAAL è un pacchetto per la simulazione e la verifica di sistemi in
tempo reale
sviluppato dalle università di Uppsala (Svezia) e Aalborg
(Danimarca)
utilizza gli automi temporizzati per modellare i sistemi
dispone di un’interfaccia grafica
permette di simulare graficamente il comportamento del sistema
verifica di semplici proprietà di sicurezza e liveness
Programma e documentazione: http://www.uppaal.com
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
4 / 29
Gli automi temporizzati in U PPAAL
Orologi: x, y
n
x <= 5
Invarianti: condizioni sugli orologi
Guardie: combinazioni booleane di confronti
Reset: azioni sugli orologi
Stati: (locazione, x, y ) con x, y ∈ R
a
x <= 5 and y > 3
x := 0
m
y <= 10
Sistemi in Tempo Reale (Lab)
Transizioni:
a
(n, x = 2.4, y = 3.1414) −→
(m, x = 0, y = 3.1415)
1.1
(n, x = 2.4, y = 3.1414) −→
(n, x = 3.5, y = 4.2415)
Uppaal
6 Novembre 2008
5 / 29
Un semplice automa temporizzato.
L’automa può attivare la transizione solo dopo che sono passati
due secondi
È obbligato ad attivarla quando sono passati 3 secondi
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
6 / 29
Estensioni degli automi temporizzati
Template: gli automi sono definite mediante modelli che
accettano parametri. Questi parametri sono istanziati nella
definizione del sistema.
Variabili intere: lo stato del sistema dipende anche da variabili
intere che vengono modificate solamente dalle transizioni discrete.
Reti di automi: un sistema può essere composto da più automi
che evolvono in parallelo.
Canali: permettono la sincronizzazione tra due automi.
Urgent/Committed locations: locazioni dove il tempo non scorre
e che devono essere lasciate il prima possibile.
Array di orologi, canali e variabili.
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
7 / 29
Reti di automi: la macchina del caffè
coin e cof sono due canali di sincronizzazione:
Person inserisce una moneta nella macchina (coin!) e rimane in
attesa del caffè (cof ?)
Machine accetta la moneta (coin?) e, entro 3 secondi, prepara un
caffè (cof !), oppure va in uno stato di errore.
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
8 / 29
Reti di automi: semantica
n1
n2
x1 < 3
x2 > 5
a!
a?
x1 := 0
x2 := 0
m1
m2
Le transizioni etichettate con un canale
si attivano simultaneamente:
entrambe le guardie devono essere
vere
una transizione invia un segnale
(a!) e l’altra lo riceve (a?)
entrambi i reset vengono eseguiti
a
(n1 , n2 , x1 = 2.65, x2 = 6.13) −→ (m1 , m2 , x1 = 0, x2 = 0)
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
9 / 29
Model Checking e verifica automatica
Descrizione del sistema
Timed Automata A
Si!
A soddisfa F ?
No!
Informazioni diagnostiche
Requisiti del sistema
Specifica F
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
10 / 29
Specificare le proprietà in U PPAAL
U PPAAL usa un frammento della logica CTL per specificare le proprietà
da verificare:
F ::= op_temporale formula_di_stato
Le formule di stato esprimono proprietà dei singoli stati:
fds ::= Proc.loc | deadlock |
x == n | x <= n | x < n | x > n | x >= n |
fds and fds | fds or fds |
fds imply fds | not fds
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
11 / 29
Operatori temporali: A[], E<>, -->, A<>, E[]
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
12 / 29
Esempi di proprietà
Il sistema non va mai in deadlock: A[] not deadlock
È possibile che il processo P1 rimanga nello stato q per più di 10
secondi: E<> (P1.q and x > 10)
Ogni messaggio inviato da P1 viene ricevuto da P2 entro 3
secondi: P1.invia --> (P2.riceve and x <= 3)
Il sistema P raggiunge sempre lo stato q in un tempo compreso
tra 4 e 6 secondi: A<> (P.q and x >= 4 and x <= 6)
È possibile che il sistema P non entri mai nello stato q:
E[] not P.q
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
13 / 29
Outline
1
Una breve introduzione ad Uppaal
2
Il problema dei soldati
3
Un protocollo di mutua esclusione
4
Esercizio
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
14 / 29
Il problema dei soldati
Campo
minato
?
20
25
5
10
torcia
solo chi ha la torcia può passare per il campo minato
al massimo due soldati possono tenere la torcia
esiste un modo per mettere in salvo tutti i soldati in meno di 60 minuti?
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
15 / 29
Modellare la torcia
L rappresenta la posizione della torcia:
se L == 0 la torcia è al di qua del campo minato;
se L == 1 la torcia è al di là del campo minato.
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
16 / 29
Modellare il soldato
const int delay è un parametro che rappresenta il tempo
impiegato per attraversare il campo minato.
clock y; (nella finestra "Declaration" di "Soldier") è un orologio
locale.
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
17 / 29
Modellare l’intero problema
Definzione delle variabili globali (nella finestra "Declarations"):
chan take, release;
int[0,1] L;
clock time;
Definizione del sistema ("System declarations"):
Soldier1 = Soldier(5);
Soldier2 = Soldier(10);
Soldier3 = Soldier(20);
Soldier4 = Soldier(25);
system Soldier1, Soldier2, Soldier3, Soldier4,
Torch;
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
18 / 29
Un piccolo esercizio
L’esempio dei soldati è installato nei PC dei laboratori
(bridge.xml)
Provare a riscrivere l’esempio da zero.
Qual’è il tempo minimo che i soldati possono impiegare per
attraversare tutti quanti il ponte?
I
Dimostrarlo usando le funzioni di verifica di Uppaal!
Modificare l’esempio:
I
I
I
Aggiungendo nuovi soldati;
Aggiungendo una torcia;
Permettendo a tre soldati di tenere la torcia.
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
19 / 29
Outline
1
Una breve introduzione ad Uppaal
2
Il problema dei soldati
3
Un protocollo di mutua esclusione
4
Esercizio
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
20 / 29
Consideriamo un semplice esempio di protocollo di mutua esclusione:
process P0:
loop
req0 = 1
turn = 1
wait until turn == 0 or req1 == 0
sezione critica P0
req0 = 0
end loop
process P1:
loop
req1 = 1
turn = 0
wait until turn == 1 or req0 == 0
sezione critica P1
req1 = 0
end loop
I due processi sono simmetrici
U PPAAL permette di definire il processo una sola volta attraverso
l’uso di template
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
21 / 29
Consideriamo un semplice esempio di protocollo di mutua esclusione:
process P0:
loop
req0 = 1
turn = 1
wait until turn == 0 or req1 == 0
sezione critica P0
req0 = 0
end loop
process P1:
loop
req1 = 1
turn = 0
wait until turn == 1 or req0 == 0
sezione critica P1
req1 = 0
end loop
I due processi sono simmetrici
U PPAAL permette di definire il processo una sola volta attraverso
l’uso di template
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
21 / 29
Consideriamo un semplice esempio di protocollo di mutua esclusione:
process P0:
loop
req0 = 1
turn = 1
wait until turn == 0 or req1 == 0
sezione critica P0
req0 = 0
end loop
process P1:
loop
req1 = 1
turn = 0
wait until turn == 1 or req0 == 0
sezione critica P1
req1 = 0
end loop
I due processi sono simmetrici
U PPAAL permette di definire il processo una sola volta attraverso
l’uso di template
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
21 / 29
Nome template: mutex
Parametri: bool &reqa, bool &reqb, bool me
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
22 / 29
Il template mutex va istanziato con i parametri corretti per ottenere i
due processi simmetrici:
bool req0, req1;
bool turn;
P0 = mutex(req0,req1,0);
P1 = mutex(req1,req0,1);
system P0,P1;
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
23 / 29
Verificare se il protocollo soddisfa le seguenti proprietà:
P1 riesce ad accedere alla sua regione critica: E<> P1.CS
il sistema non va mai in deadlock: A[] not deadlock
P0 e P1 non possono essere contemporaneamente nella regione
critica: A[] not (P0.CS and P1.CS)
ogni volta che P1 chiede di entrare nella sezione critica la sua
richiesta viene soddisfatta: P1.req --> P1.CS
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
24 / 29
Outline
1
Una breve introduzione ad Uppaal
2
Il problema dei soldati
3
Un protocollo di mutua esclusione
4
Esercizio
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
25 / 29
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
26 / 29
Modellare un distributore di bibite e l’utente che lo utilizza.
Il costo di una bibita è pari a 5 monete.
L’utente inserisce un certo numero di monete nella macchina
(CoinIn), quindi preme il bottone RequestCan oppure cancel
Se l’utente preme cancel la macchina restituisce le monete
inserite (CoinOut)
Se l’utente preme RequestCan ed il credito inserito è sufficente, la
macchina dà una bibita all’utente più l’eventuale resto (CoinOut)
La macchina impiega tra i 5 e i 10 secondi per emettere la lattina.
Si assuma che l’utente non inserisca mai più di 10 monete senza
premere nessun bottone.
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
27 / 29
Completare il sistema specificando gli automi per il Distributore
di bibite e per l’Utente in modo che rispettino le specifiche date.
Verificare che:
I
I
I
il sistema non va mai in deadlock;
se il credito è sufficente e se l’utente preme RequestCan, allora la
macchina emette una lattina entro 10 secondi.
se l’utente preme cancel, allora la macchina restituisce il credito
Suggerimento:
Iniziare con un modello semplice (la lattina costa 1 moneta, no resto) e
poi estenderlo al caso richiesto.
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
28 / 29
http://profs.sci.univr.it/~bresolin/lab01.pdf
Sistemi in Tempo Reale (Lab)
Uppaal
6 Novembre 2008
29 / 29