Modellazione di sistemi software (Peled, cap. 4) Modellare un sistema: rappresentarlo in termini di oggetti matematici che ne riflettono le

Documenti analoghi
Modellazione di sistemi software

Automi Automi finiti: macchine a stati su sistemi di transizioni finiti Modellare con TS e specificare con automi: si usa lo stesso tipo di

Specifica formale. Verifica formale (Prima parte) 03: Logica temporale lineare 1 / 26

Logica per la Programmazione

Metodi formali per la verifica dell affidabilità di sistemi: materiale didattico

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Logica per la Programmazione

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Logica per la Programmazione

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

CAPITOLO 3 - ALGORITMI E CODIFICA

INTRODUZIONE ALLA LOGICA DI HOARE. Corso di Logica per la Programmazione A.A. 2013/14

Architetture data-flow

Linguaggi di specifica

INTRODUZIONE ALLA LOGICA DI HOARE. Corso di Logica per la Programmazione

Ingegneria del software

Intelligenza Artificiale I

Introduzione agli Algoritmi

Logica: materiale didattico

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

Introduzione alla programmazione

Risoluzione di un problema

Intelligenza Artificiale II. Logiche modali e temporali

Metodi formali per la verifica dell affidabilità di sistemi software (e hardware) (Peled, Software Reliability Methods, cap. 1) Importanza della

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Logica per la Programmazione

Rappresentazione dell informazione

Pseudo codice. Paolo Bison. Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova. Pseudo codice, Paolo Bison, A.A , p.

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09

Lezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione

ufficio: Ca Vignal 2, primo piano, stanza 80 ricevimento: Giovedì, oppure su appuntamento

Linguaggi di programmazione: sintassi e semantica Sintassi fornita con strumenti formali: Semantica spesso data in modo informale

Dispensa di Informatica Teorica (Elementi) - Teorema di Cook

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 02/07/2015/ Foglio delle domande /VERSIONE 1 Matricola Cognome Nome

Semantiche dei linguaggi di programmazione

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j

Verifica di programmi

Somma 3-bit. somma 3-bit con I/O sequenziale. somma 3-bit con I/O sequenziale. Osservazione

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

Cominciamo ad analizzare la rappresentazione delle informazioni... di Cassino. C. De Stefano Corso di Fondamenti di Informatica Università degli Studi

Il primo programma C++

Lezione 6 Introduzione al C++ Mauro Piccolo

PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE

PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE. Algoritmo, programma, processo

La programmazione nel linguaggio JavaScript. Il programma

Il linguaggio JavaScript

02 - Logica delle dimostrazioni

Architettura degli Elaboratori, Esercitazione 1

Processi non sequenziali e tipi di interazione

Processi non sequenziali e tipi di interazione

Logica Proposizionale

LOGICA DEL PRIMO ORDINE: MOTIVAZIONI, SINTASSI E INTERPRETAZIONI. Corso di Logica per la Programmazione A.A Andrea Corradini

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

= < < < < < Matematica 1

PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE

Fondamenti di programmazione parte 2. Elementi di informatica IGLP

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

L assegnamento. Andrea Marin. a.a. 2011/2012. Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time

Fondamenti d Informatica: linguaggi formali. Barbara Re, Phd

LOGICA DEL PRIMO ORDINE: SEMANTICA. Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella

Logica per la Programmazione

Esercitazione 11. Control-Unit. Data-Path

Ragionamento Automatico Richiami di tableaux proposizionali

FUNZIONI BOOLEANE. Vero Falso

Verifica parte IIB. Rif. Ghezzi et al

Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl

CORSO DI PROGRAMMAZIONE

Linguaggi e Traduttori: Analisi lessicale

Automi e Macchine. Computabilità. Progetto Nazionale Lauree Scientifiche Licei Fracastoro e Messedaglia Verona, novembre/dicembre 2012.

Sviluppo di programmi

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova

Luigi Piroddi

Verifica parte IIB. Grafo di controllo. Criteri di selezione per test strutturali (white box) Test. Rif. Ghezzi et al

Sviluppo di programmi

Prerequisiti Matematici

Ing. Lorenzo Vismara

Alberi di sequenti per un linguaggio predicativo L 1.

I.4 Rappresentazione dell informazione

LEZIONI 30/09/09-2/10/09

Sviluppo di programmi

Aritmetica dei Calcolatori Elettronici

Fondamenti di Informatica 2

AUTOMA A STATI FINITI

Elementi di teoria degli insiemi

Concetti Introduttivi. Il Computer

Reti combinatorie. Reti combinatorie (segue)

Reti combinatorie (segue) Reti combinatorie. Lezione 2. Architettura degli Elaboratori A. Sperduti 1

Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.

METODI MATEMATICI PER L INFORMATICA

Pseudo codice. Pseudo codice, Paolo Bison, FI07, p.1 / Pseudo codice, Paolo Bison, FI07, p.3

Sommario Obiettivo della programmazione e ciclo di sviluppo di programmi. Programmi. Ciclo di sviluppo di programmi. Obiettivo

Corso di Programmazione Dati e Istruzioni. Comunicazione dell algoritmo all elaboratore. Programmazione. Dott. Pasquale Lops

Intelligenza Artificiale. Logica Prime definizioni

Cenni di logica e calcolo proposizionale

Transcript:

Modellazione di sistemi software (Peled, cap. 4) Modellare un sistema: rappresentarlo in termini di oggetti matematici che ne riflettono le proprietà Modellare implica astrarre: semplificare la descrizione del sistema, conservando solo alcuni dei dettagli originari, focalizzandosi sulle proprietà principali e riuscendone a gestire la complessità Ad esempio, spesso si ignora la durata temporale dei processi Nelle metodologie di sviluppo del SW per raffinamenti: si definisce il modello, se ne verificano le proprietà, poi si concretizza in codice Sistemi sequenziali sono più semplici da modellare rispetto a quelli concorrenti Formalismi di modellazione Molti formalismi sono linguaggi di programmazione: si deve programmare la descrizione astratta del sistema. In alcuni casi ci sono traduttori automatici dalla descrizione originaria del sistema al formalismo di modellazione. Normalmente però l astrazione viene eseguita manualmente 1

Sistemi di Transizioni (TS) Costituiscono un formalismo astratto e generale per la descrizione di sistemi SW. Il comportamento di un sistema (sequenziale o concorrente) è descritto come se eseguisse una ed un unica azione elementare (transizione) alla volta, che trasformano uno stato del sistema in un altro. Il sistema si trova cioè in ogni istante in uno stato, dal quale può eseguire una transizione tra quelle abilitate in quello stato. Ogni transizione t abilitata in uno stato s trasforma s in uno stato s = t(s) Il processo continua finché si può eseguire almeno una transizione. Linguaggio: per descrivere il comportamento di un sistema, si definisce innanzitutto un linguaggio per rappresentare le variabili, i valori, le operazioni e le relazioni di cui occorre parlare, cioè una segnatura G = V, F, R Inoltre, si stabilisce: quali sono i valori che possono assumere le variabili e le costanti del linguaggio: un dominio D come si vogliono interpretare le costanti, i simboli di funzione e di predicato: una funzione di interpretazione f e l insieme F R su cui interpreta i simboli di funzione in F e quelli di relazione in R. In sostanza, si definisce una struttura del primo ordine, costituita da una segnatura G e un interpretazione M di G, sulla base della quale si descriverà il sistema. 2

Stati Uno stato contiene tutti i valori delle variabili del programma. Se le variabili del programma corrispondono a elementi di V : variabili di programma variabili logiche program counter(s) variabili logiche allora uno stato è un assegnazione a : V D: stati assegnazioni Esempio: siano V = {x, y} e D = IN. Lo stato x = 2 y = 1 è l assegnazione a tale che a(x) = 2 e a(y) = 1. Una formula senza quantificatori rappresenta un insieme di stati: tutti gli stati in cui è vera formula F {a (M, a) = F } (x > 2 y 3) x = 0 x = 0 y = 1 x = 2 y = 1 x = 3 y = 1 x = 4 y = 2 x = 4 y = 4 3

Sistemi descritti in un linguaggio proposizionale Se non interessano i valori specifici delle variabili, ma solo la verità o falsità di relazioni tra di esse (x > y), si può usare un linguaggio proposizionale: La segnatura G è costituita semplicemente da un insieme P di lettere proposizionali (o variabili proposizionali) le costanti true e false e i connettivi proposizionali sono simboli logici; il dominio dell interpretazione M è Bool = {T RU E, F ALSE} un assegnazione a è un interpretazione proposizionale Uno stato è dunque un interpretazione proposizionale. stato a : P Bool Un interpretazione proposizionale a si può rappresentare mediante un insieme di variabili proposizionali: tutte e solo quelle vere in a {p P a(p) = TRUE} Ad esempio, se P = {rich, work} lo stato {work} è l interpretazione a tale che a(work) = T RU E e a(rich) = F ALSE formula F {a a = F } work {work}, {work, rich} 4

Transizioni Il sistema si trova in ogni istante in uno stato, dal quale può eseguire una transizione tra quelle abilitate in quello stato. Ogni transizione t abilitata in uno stato s trasforma s in uno stato s = t(s) Quindi una transizione t è caratterizzata da: una condizione di abilitazione, che specifica a quali stati è applicabile una formula senza quantificatori, che identifica l insieme degli stati a cui t è applicabile; una descrizione dello stato t(s) che si ottiene applicando t al generico stato s: una descrizione di come vengono modificati i valori delle variabili passando da s a t(s). Stati iniziali Infine, si deve identificare l insieme degli stati iniziali del sistema una formula senza quantificatori 5

Un sistema di transizioni (TS) è una tripla: Sistemi di transizione: definizione (S, T, Θ) S è una struttura del primo ordine (G, D, F, R, f), con G = (V, F, R) oppure, nella nostra notazione: S = G, M. L insieme delle variabili V di G include le variabili di programma e i program counters T: insieme finito di transizioni Ogni t T ha la forma dove: p (v 1, v 2,..., v n ) := (e 1, e 2,..., e n ) la condizione p è una formula senza quantificatori, v 1, v 2,..., v n V e 1, e 2,..., e n terms(g) Θ: condizione iniziale (formula senza quantificatori, che identifica gli stati iniziali). 6

Transizioni Una transizione t : p (v 1, v 2,..., v n ) := (e 1, e 2,..., e n ) è abilitata (si può eseguire) in ogni stato s che soddisfa p (enabledness condition di t): t è abilitata in s sse (M, s) = p (nella notazione di Peled: s = S p) Come cambiano i valori delle variabili: se s eseguendo t in s, allora = t(s) è lo stato che si ottiene s (v i ) = T s (e i ) se 1 i n s(v i ) altrimenti per i = 1,..., n, il valore di v i in s è il valore di e i in s: s (v i ) = T s (e i ) per ogni altra variabile v {v 1, v 2,..., v n }, il valore di v in t(s) resta uguale al valore di v in s: s (v) = s(v) In altri termini, t(s) è la variante di s che assegna T s (e 1 ) a v 1,...,T s (e n ) a v n : t(s) = s[t s (e 1 )/v 1,..., T s (e n )/v n ] Si specificano solo i valori che cambiano nel passaggio da s a t(s). 7

Esempio t : x < y (x, y) := (y, x) L assegnazione (x, y) := (y, x) scambia i valori di x e y. s = x = 0 y = 1 z = 3 s = x = 1 y = 0 z = 3 t è abilitata in s e t(s) = s t non è abilitata in s 8

Sistemi di transizioni su un linguaggio proposizionale G = P è l insieme delle variabili proposizionali del linguaggio Θ è una formula proposizionale In una transizione t : p (v 1, v 2,..., v n ) := (e 1, e 2,..., e n ) p è una formula del linguaggio; v i è una variabile proposizionale, per i = 1,..., n; e i è una formula, per i = 1,..., n. Esempio: con P = {rich, work}, sia t : work (work, rich) := (false, rich) s 0 = {work} t {rich} = t(s 0 ) s 1 = {work, rich} t Ø = t(s 1 ) t non è abilitata né in t(s 0 ) né in t(s 1 ). 9

Esecuzioni (run) Una esecuzione (run) di un sistema è una sequenza massimale di stati, che inizia in uno stato che soddisfa la condizione iniziale e dove ogni stato si ottiene dal precedente mediante una transizione. Un esecuzione termina solo se nell ultimo stato non è abilitata alcuna transizione. Per semplificare, ed evitare di avere sia esecuzioni finite che infinite, si considerano soltanto esecuzioni infinite: esecuzioni finite sono rappresentate da sequenze infinite in cui l ultimo stato si ripete all infinito. Un esecuzione di un sistema è dunque una sequenza infinita di stati s 0, s 1,... tali che: (M, s 0 ) = Θ (s 0 = S Θ ) per ogni i, vale uno di questi due casi: esiste una transizione t : p (v 1, v 2,..., v n ) := (e 1, e 2,..., e n ) abilitata in s i, cioè tale che (M, s i ) = p e s i+1 = t(s i ), cioè s i+1 = s i [T si (e 1 )/v 1,..., T si (e n )/v n ] nessuna transizione è abilitata in s i e s i+1 = s i Stati raggiungibili: quelli che compaiono in qualche esecuzione del sistema 10

Esempio Sistema di transizioni sul linguaggio proposizionale P = {work, rich} Θ = rich work t 1 : work work := false t 2 : rich work := true t 3 : work (rich, work) := (true, false) t 4 : rich rich := rich Un sistema di transizioni genera uno spazio di stati: l insieme degli stati che possono essere generati dal sistema e delle transizioni tra di essi. t2 s1 {work} t1 t2 t3 s2 {} t4 s3 {rich} Un sistema di transizioni è un modo per descrivere implicitamente uno spazio di stati. 11

Esempio di modellazione di un programma Divisione intera Divisione del valore in x1 per il valore in x2. Quoziente in y1, resto in y2. Versione etichettata del programma m1: y1:=0; m2: y2:=x1; m3: while y2 >= x2 do m4: y1:=y1+1; m5: y2:=y2-x2 m6: end Segnatura: V = {x 1, x 2, y 1, y 2, pc} F = {0, 1, m 1,..., m 6, +, } R = { } Interpretazione: Dominio: IN; Interpretazione standard su IN dei simboli in R e F, arbitraria quella delle etichette (purché distinte). Stato iniziale: Θ = x 2 > 0 pc = m 1 Transizioni: t 1 : pc = m 1 (pc, y 1 ) := (m 2, 0) t 2 : pc = m 2 (pc, y 2 ) := (m 3, x 1 ) t 3 : pc = m 3 pc := if(y 2 x 2, m 4, m 6 ) t 4 : pc = m 4 (pc, y 1 ) := (m 5, y 1 + 1) t 5 : pc = m 5 (pc, y 2 ) := (m 3, y 2 x 2 ) oppure: t 3 : pc = m 3 y 2 x 2 pc := m 4 t 3 : pc = m 3 y 2 < x 2 pc := m 6 12

Sistemi concorrenti La modellazione di un sistema concorrente mediante un TS si basa sul modello interleaving del calcolo È un modello più semplice di altri, secondo il quale un sistema concorrente viene modellato assumendo che tutti gli eventi di una singola esecuzione siano ordinati in un ordine lineare, chiamato interleaving sequence. Transizioni eseguite contemporaneamente appaiono ordinate linearmente. L esecuzione delle componenti del sistema concorrente è asincrona o alternata (interleaved). Qui assumiamo inoltre che la comunicazione tra componenti del sistema concorrente avvenga mediante variabili condivise (e non message passing). 13

Interleaving model Secondo l interleaving model viene eseguita una transizione alla volta: se ci sono più processi la loro esecuzione è alternata (modello della multiprogrammazione). In realtà non è sempre così, nei sistemi distribuiti le transizioni possono essere contemporanee. Ma spesso sono commutative: α : x := x + 1 x = 1 x = 2 y = 1 y = 2 β : y := y + 1 rappresentato da x = 1 y = 1 α : x := x + 1 β : y := y + 1 x = 2 y = 1 x = 1 y = 2 β : y := y + 1 α : x := x + 1 x = 2 y = 2 Se le transizioni non sono commutative (esempio α : x := x + 1 e β : x := x 2) non possono essere eseguite contemporaneamente 14

Esempio Due processi: P 1 e P 2 P1 : x := x + y; P2 : y := y + x Stato iniziale: x = 2, y = 3 Versione etichettata dei due programmi l1: x:=x+y r1: y:=y+x l2: end r2: end Sistema di transizioni: S = (G, D, F, R, f) con G = (V, F, R), V = {x, y, pc l, pc r ), F = {l 1, l 2, r 1, r 2, +}, R = {=} D = IN, interpretazione standard di = e +, interpretazione arbitraria di l 1, l 2, r 1, r 2. Transizioni: t 1 : pc l = l 1 (pc l, x) := (l 2, x + y) t 2 : pc r = r 1 (pc r, y) := (r 2, y + x) Θ = x = 2 y = 3 pc l = l 1 pc r = r 1 Esercizio: disegnare lo spazio degli stati raggiungibili corrispondente al TS dato. Identificare le esecuzioni del sistema. 15

Granularità delle transizioni Nella maggior parte dei casi la modellazione di un sistema è fatta manualmente: non esiste ricetta generale Uno dei problemi più delicati è quello della scelta del livello di dettaglio appropriato Granularità troppo piccola (troppi dettagli): il modello contiene più informazioni di quelle che servono. Esplosione dello spazio degli stati Granularità troppo grande (pochi dettagli): si possono perdere informazioni sull interazione tra processi e non si coprono tutti i comportamenti possibili 16

Esempio Due processi: P 1 e P 2 P1 : x := x + y; P2 : y := y + x Stato iniziale: x = 2, y = 3 Modello A. A ogni istruzione del linguaggio corrisponde una transizione Ci sono due esecuzioni possibli: prima P 1 poi P 2 : stato finale x = 5, y = 8 prima P 2 poi P 1 : stato finale x = 7, y = 5 Modello B. Le variabili sono conservate nelle locazioni m100 e m111, rispettivamente. Vengono caricate nei registri r 1 e r 2, sono eseguite le addizioni, e i valori rimemorizzati nelle locazioni rispettive. P 1 : load r1, m100 add r1, m111 store r1, m100 Assumiamo che i valori iniziali dei registri sia 0. P 2 : load r2, m1111 add r2, m100 store r2, m111 Se ogni istruzione corrisponde a una transizione, ci sono 20 esecuzioni alternate (interleaved) possibili. 17

La sequenza seguente load r1, m100 load r2, m111 add r1, m111 add r2, m100 store r1, m100 store r2, m111 risulta nello stato in cui x = m100 = 5 y = m111 = 5 Con il primo modello: non si coglie una possibile interazione tra istruzioni macchina. La verifica potrebbe non identificare possibili errori. Con il secondo modello: se l implementazione reale corrisponde alla granularità più alta, il modello include comportamenti che in realtà non sono possibili (falsi negativi) Esercizio: definire un TS corrispondente al modello B e disegnare lo spazio degli stati raggiungibili 18

Combinazioni n k = = n (n 1)... (n k + 1) 1 2... k 1 n (n 1)... (n (k 1)) 1 2... k 1 n 1 (n 1) 2 (n 2) (n (k 1)) = k 1 k Dopo p moltiplicazioni, si possono fare le prime p divisioni, ma non ancora la (p + 1)-esima Valori iniziali: y1=n, y2=0, y3=1 y1 va da n a n-k+1: n-y1 conta le moltiplicazioni y2 va da 0 a k-1: conta le divisioni y3: risultato finale l1: if y1 = n-k then halt r1: if y2=k then halt l2: y3:=y3*y1 r2: y2:=y2+1 l3: y1:=y1-1 r3: await y2 <= n-y1 l4: goto l1 r4: y3:=y3/y2 r5: goto r1 19

Combinazioni (II) Segnatura:... Interpretazione:... t 1 : pc l = l 1 pc l := if(y 1 = n k, halt l, l 2 ) t 2 : pc l = l 2 (pc l, y 3 ) := (l 3, y 3 y 1 ) t 3 : pc l = l 3 (pc l, y 1 ) := (l 4, y 1 1) t 4 : pc l = l 4 pc l := l 1 t 5 : pc r = r 1 pc r := if(y 2 = k, halt r, r 2 ) t 6 : pc r = r 2 (pc r, y 2 ) := (r 3, y 2 + 1) t 7 : pc r = r 3 y 2 n y 1 pc r := r 4 t 8 : pc r = r 4 (pc r, y 3 ) := (r 5, y 3 /y 2 ) t 9 : pc r = r 5 pc r := r 1 Θ = y 1 = n y 2 = 0 y 3 = 1 pc l = l 1 pc r = r 1 n > 0 k > 0 20

Alcuni stati raggiungibili per n = 3, k = 2 stato pc l pc r y 1 y 2 y 3 s1 l 1 r 1 3 0 1 s2 l 2 r 1 3 0 1 s3 l 2 r 2 3 0 1 s4 l 3 r 1 3 0 3 s5 l 3 r 2 3 0 1 s6 l 4 r 2 2 0 1 s7 l 2 r 3 3 1 1 t2 s4 t3 s6 t1 s2 t5 s5 s1 t5 s3 t6 s7 21

Il setaccio di Eratostene Per generare tutti i numeri primi minori o uguali a P: 1. Mettere nel setaccio tutti i numeri interi compresi tra 2 e P 2. Ripetere finché il setaccio non è vuoto: (a) Togliere dal setaccio il numero più piccolo M e includerlo tra i numeri primi (b) Rimuovere dal setaccio tutti i multipli di M Processo di sinistra: genera gli interi da 2 a P N processi di mezzo: l i-esimo processo di mezzo conserva l i-esimo numero primo P i e filtra i successivi, passando al processo seguente solo quelli che non sono multipli di P i Processo di destra: conserva l N + 1-esimo numero primo. 22

Mutua esclusione Due processi in competizione per entrare in una sezione critica in cui utilizzano una risorsa condivisa. Quando un processo non è nella sua sezione critica, è nella sezione non critica. Proprietà del protocollo che gestisce la concorrenza: Esclusione: i processi non entrano contemporaneamente nelle rispettive sezioni critiche Liveness: se un processo richiede di accedere alla sezione critica, gli sarà consentito in un tempo finito. Un tentativo di risolvere il problema della mutua esclusione boolean c1, c2 initially 1 P1:: m1: while true do m2: (* noncritical section 1 *) m3: c1:=0; m4: wait until c2=1 m5: (* critical section 1 *) m6: c1:=1 end P2:: n1: while true do n2: (* noncritical section 2 *) n3: c2:=0; n4: wait until c1=1 n5: (* critical section 1 *) n6: c2:=1 end Si assume che le sezioni non critiche non cambino i valori di c1 e c2. Una sezione non critica potrebbe non terminare, ma le sezioni critiche terminano sempre 23

Sistema di transizioni t1 : pc 1 = m1 pc 1 := m2 t2 : pc 1 = m2 pc 1 := m3 t2 : pc 1 = m2 pc 1 := m2 (* loop *) t3 : pc 1 = m3 (pc 1, c1) := (m4, 0) t4 : pc 1 = m4 c2 = 1 pc 1 := m5 t5 : pc 1 = m5 pc 1 := m6 t6 : pc 1 = m6 (pc 1, c1) := (m1, 1) t7 : pc 2 = n1 pc 2 := n2 t8 : pc 2 = n2 pc 2 := n3 t8 : pc 2 = n2 pc 2 := n2 (* loop *) t9 : pc 2 = n3 (pc 2, c2) := (n4, 0) t10 : pc 2 = n4 c1 = 1 pc 2 := n5 t11 : pc 2 = n5 pc 2 := n6 t12 : pc 2 = n6 (pc 2, c2) := (n1, 1) Θ = pc 1 = m1 pc 2 = n1 c1 = 1 c2 = 1 Esercizio: rappresentare (una parte di) lo spazio degli stati generato, in particolare quello contenente gli stati generati dalla sequenza di transizioni t1, t2, t3, t7, t8, t9. Ci sono transizioni abilitate nello stato che si ottiene? 24

Automi Un TS descrive implicitamente lo spazio degli stati del sistema (l insieme degli stati e delle transizioni): un automa (un grafo) dove: S: insieme di stati A = (S,, I) S S: relazione di transizione (s, s ) se esiste una transizione atomica da s a s I S: insieme degli stati iniziali Si possono aggiungere altre componenti: etichette sugli archi, etichette sugli stati,... Esecuzioni (run) Una run dell automa (S,, I) è una sequnza massimale s 0, s 1,... tale che: s 0 I per ogni i: (s i, s i+1 ) Massimale: o è infinita, oppure l ultimo stato non ha successori (nessuna transizione è abilitata) 25

Automi con etichettatura degli stati A = (S,, I, L, Σ) dove S,, I sono come sopra e: Σ è l alfabeto: un insieme (di etichette); L : S Σ è una funzione che associa un etichetta a ciascuno stato. 26

Strutture di Kripke Automi in cui ogni stato è etichettato da un insieme di variabili proposizionali (S,, I, L P, 2 P ) dove P è un insieme di variabili proposizionali Per rappresentare proprietà di sistemi a stati finiti spesso si usano formalismi proposizionali. Ogni stato del sistema è allora etichettato da un insieme di lettere proposizionali L P : S 2 P dove P è l insieme di variabili proposizionali che rappresentano proprietà del sistema L P (s) è l insieme delle variabili proposizionali vere in s Questo equivale a considerare ogni stato come un assegnazione a variabili booleane, o un interpretazione proposizionale, dove s = p sse p L P (s) 27

ASSUNZIONI DI FAIRNESS A volte non si vogliono considerare tutte le esecuzioni del modello del sistema, perché alcune di esse, sebbene presenti nel modello, non lo sono nel sistema Assunzioni di fairness: vincoli semantici imposti sulle esecuzioni, per escludere quelle irragionevoli Esempio: P 1 e P 2 eseguiti per sempre, senza interazioni Una esecuzione alternata è s 0, s 1,... con s i+1 ottenuto da s i eseguendo una transizione di P 1 o una di P 2. In ogni stato è sempre abilitata sia una transizione di P 1 che una di P 2. Nel modello ci sono anche esecuzioni dove, da un certo punto in poi, si eseguono solo transizioni di P 1 (o di P 2 ). Una rappresentazione fedele dovrebbe soddisfare il vincolo di fairness: ogni esecuzione contiene un numero infinito di transizioni di ciascun processo. Una modellazione esatta dovrebbe tener conto dello scheduler reale, ma il modello sarebbe troppo specifico e poco pratico. Si usa un modello più semplice con fairness constraints che escludono le esecuzioni irragionevoli. 28

Vincoli di fairness semplici In alcuni formalismi, un vincolo di fairness è espresso mediante un insieme di stati f S un path è fair se contiene un elemento di f infinitamente spesso. Un insieme di vincoli di fairness è un insieme F 2 S : F = {f 1,..., f k } con f i S Un esecuzione è fair se, per ciascun i = 1,..., k, contiene infinite occorrenze di un elemento di f i. In un sistema di transizioni, in cui sono definite una segnatura e la sua interpretazione, un vincolo di fairness (insieme di stati) si può rappresentare mediante una formula senza quantificatori F: s f se e solo se (M, s) = F 29

P 1 :: x:=1 Esempio 1 P 2 :: while y=0 do [ no op # if x=1 then y:=1 ] /* #: scelta non deterministica La variabile x è condivisa, y è locale a P 2. Entrambe inizializzate a 0. Variabili per i program counter: pc l e pc r, con valori l 0 e l 1, e r 0 e r 1, rispettivamente. Versione etichettata: P1 P2 l0: x:=1 r0: while y=0 do l1: end r1: no_op # if x=1 then y:=1 Transizioni: t 0 : pc l = l 0 (pc l, x) := (l 1, 1) t 1 : pc r = r 0 y = 0 pc r := r 1 (inizio del ciclo) t 2 : pc r = r 1 pc r := r 0 (esecuzione di no op e ritorno a inizio ciclo) t 3 : pc r = r 1 x = 1 (pc r, y) := (r 0, 1) (assegnazione e ritorno a inizio ciclo) Condizione iniziale: Θ : x = 0 y = 0 pc l = l 0 pc r = r 0 30

Esempio 1 (continua) 0 0 l 0 r 0 t 1 t 0 t 2 1 0 0 0 l 1 r 0 l 0 r 1 t 2 t 1 t 0 t3 1 0 1 1 l 1 r 1 l 1 r 0 Il modello non esclude esecuzioni in cui non viene mai eseguita la transizione t 0 oppure la t 3. Se si sa che lo scheduler reale in realtà esclude tali esecuzioni si può aggiungere al modello del sistema il vincolo di fairness 1 1 f = l 1 r 0 Equivalentemente, il vincolo si può esprimere mediante una formula F: y = 1 Le esecuzioni fair sono quelle che rendono vero y = 1 infinite volte. 31

Esempio 2 t2 s1 {work} t1 t2 t3 s2 {} t4 s3 {rich} Se vogliamo escludere (come irrealistiche!) tutte le esecuzioni in cui non si diventa mai ricchi, si può aggiungere alla descrizione del sistema il vincolo di fairness O, equivalentemente, Infatti F è vera in tutti e soli gli stati di f f = {s3} F = rich Le esecuzioni fair sono quelle che rendono vere F infinitamente spesso: cioè quelle che contengono s3: s1,..., s1, s3, s3, s3, s3,... 32

Esempio 3: il comportamento di un semaforo s1 {yellow} s2 {red} s0 {green} Se si vogliono escludere come irrealistiche le esecuzioni in cui da un certo punto in poi il semaforo resta indefinitivamente dello stesso colore, si possono aggiungere i vincoli di fairness F = {f 1, f 2 } con f 1 = {s0} e f 2 = {s2} I due vincoli di fairness possono essere espressi mediante l insieme di formule Φ = {green, red} 33

Esempio 4: due processi con una risorsa condivisa Si vogliono escludere le esecuzioni in cui: s0 {} uno dei due processi, pur avendo richiesto di accedere alla risorsa condivisa, non venga mai servito; s1 {reqb} s2 {reqa} il servizio di un processo duri all infinito. s6 {serveb} s4 {servea, reqb} s3 {reqa, reqb} s5 {serveb, reqa} s7 {servea} Esecuzioni fair: per ogni stato t dell esecuzione, se t contiene reqx (per X = A o X = B), allora esiste uno stato t successivo a t che non contiene reqx (X è stato servito e il suo servizio è terminato). F = {{s0, s4}, {s0, s5}} {s0, s4} ( reqa serveb reqb servea) ( reqa serveb reqb servea) reqa serveb (reqb servea) Φ = { reqa serveb (reqb servea), reqb servea (reqa serveb)} 34

Le esecuzioni fair sono quelle in cui green si verifica infinite volte e anche red si verifica infinite volte. 35