03.06.2013 Views

Un modello integrato control-flow e data-flow per il rilevamento ...

Un modello integrato control-flow e data-flow per il rilevamento ...

Un modello integrato control-flow e data-flow per il rilevamento ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

2.1. Modelli <strong>control</strong> <strong>flow</strong> 11<br />

con una coppia (si, pi). Ogni evento contiene due informazioni e in particolare la<br />

chiamata di sistema che è stata eseguita e <strong>il</strong> punto del programma dal quale è stata<br />

eseguita.<br />

L’automa è rappresentab<strong>il</strong>e come un grafo G = (V ∪ {end}, E = V × V × L)<br />

e, dati due eventi consecutivi (si, pi) e (si+1, pi+1) di una traccia di lunghezza k, la<br />

costruzione avviene nel seguente modo:<br />

• <strong>per</strong> 0 ≤ i ≤ k: V = V ∪ {pi}<br />

• <strong>per</strong> 0 ≤ i ≤ k: E = E ∪ {(pi, pi+1, si)}<br />

• infine: E = E ∪ {(pk, end, sk)}<br />

L’idea dietro a questo automa è che <strong>per</strong> passare da uno stato ad un altro del pro-<br />

gramma deve avvenire una transizione causata da una chiamata di sistema. In-<br />

tuitivamente, questa costruzione porta quindi ad un automa in cui gli stati sono<br />

etichettati con <strong>il</strong> punto del programma dal quale viene eseguita la system call e gli<br />

archi con la chiamata di sistema coinvolta nella transizione. Vediamo un esempio.<br />

1 void f(int cond)<br />

2 {<br />

3 open();<br />

4 if (cond % 2)<br />

5 read();<br />

6 else<br />

7 write();<br />

8 close();<br />

9 }<br />

10<br />

11 int main(void)<br />

12 {<br />

13 int i = 3;<br />

14 wh<strong>il</strong>e (i--)<br />

15 f(i);<br />

16 }<br />

La traccia di una esecuzione del programma d’esempio sarebbe la seguente:<br />

(open, 3), (write, 7), (close, 8), (open, 3), (read, 5),<br />

(close, 8), (open, 3), (write, 7), (close, 8)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!