30.11.2012 Views

download tesi - MobiLab - Università degli Studi di Napoli Federico II

download tesi - MobiLab - Università degli Studi di Napoli Federico II

download tesi - MobiLab - Università degli Studi di Napoli Federico II

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Progetto e valutazione <strong>di</strong> algoritmi per la raccolta<br />

dati affidabili su reti <strong>di</strong> sensori senza cavo<br />

Una applicazione è composta da uno o più componenti che possono<br />

<strong>di</strong>alogare tra loro facendo uso <strong>di</strong> due set <strong>di</strong> funzioni: i coman<strong>di</strong> e gli<br />

eventi. TinyOs mette a <strong>di</strong>sposizione del programmatore un set <strong>di</strong><br />

componenti standard. Un'applicazione può connettere tali<br />

componenti utilizzando delle specifiche <strong>di</strong> legame che sono<br />

in<strong>di</strong>pendenti dall'effettiva implementazione. Ogni componente<br />

inoltre contiene un'area dati chiamata frame, la quale viene allocata<br />

staticamente (figura 1.4).<br />

• Operazioni in <strong>di</strong>verse fasi<br />

La richiesta <strong>di</strong> una data operazione e il suo completamento sono due<br />

funzioni <strong>di</strong>stinte. I coman<strong>di</strong> tipicamente richiedono l'esecuzione <strong>di</strong><br />

un'operazione: quando questa termina, viene generato un evento che<br />

segnala all'applicazione il termine dell'operazione richiesta. Un<br />

esempio tipico è l'invio <strong>di</strong> un pacchetto: l'applicazione invoca il<br />

comando send per iniziare la trasmissione e il componente <strong>di</strong><br />

comunicazione segnala l'evento sendDone quando l'operazione è<br />

terminata. Esistono anche coman<strong>di</strong> al cui termine non è richiamato<br />

alcun evento (ad esempio l'accensione <strong>di</strong> un LED).<br />

• Concorrenza:<br />

Il TinyOs può eseguire un solo programma alla volta, tipicamente<br />

formato da più componenti. Ci sono due tipi <strong>di</strong> thread: task ed<br />

eventi hardware. I primi sono funzioni la cui esecuzione può essere<br />

ritardata: essi vengono eseguiti in or<strong>di</strong>ne secondo una coda FIFO.<br />

Gli eventi hardware hanno priorità massima e bloccano qualsiasi<br />

esecuzione in corso. Possono dunque nascere situazioni <strong>di</strong> data race<br />

(ad esempio l’aggiornamento <strong>di</strong> una variabile)<br />

• Active Messages<br />

Active messages è la tecnologia <strong>di</strong> rete utilizzata da TinyOs. Questo<br />

sistema permette <strong>di</strong> inviare messaggi a tutti o a un singolo nodo tra i<br />

30

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

Saved successfully!

Ooh no, something went wrong!