TinyOS: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Maupag (discussione | contributi)
Nessun oggetto della modifica
Riga 1:
'''TinyOS''' è un [[sistema operativo]] per i [[mote]], i nodi delle reti wireless di sensori ([[wireless sensor network|Wireless Sensor Network]]). È sotto sviluppo da parte di un consorzio guidato dall'[[Università della California, Berkeley]], in collaborazione con [[Intel]] Research e nasce per far parte della tecnologia [[Smart Dust]]. TinyOS è scritto in nel linguaggio di programmazione [[NesC]] con il quale si evolve in simbiosi.
 
TinyOS è un sistema operativo totalmente non bloccante e l'intero ciclo di vita del software in esecuzione è di tipo event-driven. Ogni evento viene associato ad un interrupt che a sua volta è legato ad una sezione di codice di tipo Asynchronous Code -AC-. Sezioni di tipo AC possono essere invocata solo dagli interrupt e di conseguenza queste routine (riconoscibili poiché decorate tramite la keyword event) entrano a far parte del [[Core]] del sistema stesso (possono essere pensate come le routine che vengono richiamate tramite il vettore degli interrupt in un sistema operativo standard).
TinyOS è un sistema operativo totalmente non bloccante, scritto in [[NesC]]. Gestisce le operazioni di I/O che richiedono tempi d'esecuzione più lunghi di pochi microsecondi in modo asincrono; queste ultime sono anche dette operazioni split-phase (che in inglese significa "a fase spaccata") per via del fatto che, dopo essere state invocate, al momento del loro completamento, innescano l'esecuzione di una funzione di ritorno (callback) chiamata evento.
 
L'assenza di primitive bloccanti è un grosso limite poiché può portare a situazioni di [[race condition]]. Tuttavia, nesC "risolve" tramite un workaround il problema permettendo l'uso della keyword "Atomic" all'interno del codice AC: la keyword può essere usata per decorare blocchi di codice da eseguire senza interruzioni. L'implementazione di questo costrutto richiede la disattivazione di tutti gli interrupt, l'esecuzione del codice (monopolizzando l'intero sistema) e la successiva riattivazione degli interrupt: pertanto, viene consigliato di rendere le sezioni atomiche quanto più piccole possibile per evitare di perdere eventi che nel frattempo potrebbero verificarsi.
 
TinyOS è un sistema operativo totalmente non bloccante, scritto in [[NesC]]. Gestisce leLe operazioni di I/O che richiedono tempi d'esecuzione più lunghi di pochi microsecondi vengono gestite in modo asincrono; queste ultime sono anche dette operazioni split-phase (che in inglese significa "a fase spaccata") per via del fatto che, dopo essere state invocate, al momento del loro completamento, innescano l'esecuzione di una funzione di ritorno (callback) chiamata evento.
 
Invece, per supportare le operazioni che richiedono lunghe computazioni, TinyOS usa il costrutto task fornito dal linguaggio NesC. Questo costrutto è una specie di procedura che può essere invocata da un comando (a sua volta invocato da un evento): è simile ad una chiamata DPC (Deferred Procedure Call), una chiamata a bassa priorità.