TinyOS: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
No2 (discussione | contributi) m - Link errato (voce non esistente) |
||
Riga 4:
== Modello di concorrenza ==
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
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.
|