Pagine

Translate

giovedì 11 agosto 2011

Sistemi Operativi Real Time (RTOS)

Un sistema operativo real-time o in tempo reale (abbreviato in RTOS) è un sistema operativo specializzato per il supporto di applicazioni software real-time. Questi sistemi vengono utilizzati tipicamente in ambito industriale (controllo di processo, pilotaggio di robot, trasferimento dati nelle telecomunicazioni) o comunque dove sia necessario ottenere una risposta dal sistema entro un tempo prefissato.

Un sistema operativo real-time non deve essere necessariamente veloce: non è importante l'intervallo di tempo in cui il sistema operativo/applicativo deve reagire; l'importante è che risponda entro un tempo massimo pre-determinato. In altre parole il sistema deve essere prevedibile.

In pratica un sistema real-time deve garantire che una elaborazione (o task) termini entro un dato vincolo temporale o scadenza (detta in gergo deadline). Per garantire questo è richiesto che la schedulazione delle operazioni sia fattibile. Il concetto di fattibilità di schedulazione è alla base della teoria dei sistemi real-time ed è quello che ci permette di dire se un insieme di task sia eseguibile o meno in funzione dei vincoli temporali dati. Solitamente i processi che si presentano in un sistema in tempo reale vengono suddivisi in due categorie:


PROCESSI HARD REALTIME:

Processi in cui il mancato rispetto dei vincoli temporali (sforamento delle deadline) comporta un effetto catastrofico sul sistema.

In generale tra gli esempi di processi hard realtime possiamo annoverare tutti quelli che hanno a che fare strettamente con l’ambiente reale circostante(sensoristica, sistemi di attuazione, controllo di dispositivi automatici)

PROCESSI SOFT REALTIME:

Processi in cui lo sforamento dei vincoli temporali comporta un degrado delle prestazioni, ma non viene compromesso il comportamento complessivo del sistema. Pensiamo per esempio al motore di rendering di un videgame, che in alcune situazioni potrebbe rallentare per via di carichi più alti del previsto con l’effetto di vedere il flusso di immagini scattare.

Nei sistemi complessi molto spesso le due categorie di processi convivono e vanno gestite contemporaneamente.


Per dare una idea generale di quello che deve essere un sistema operativo in tempo reale possiamo elencarne le caratteristiche attese:


- Gestione esplicita dei vincoli temporali:
La correttezza dei risultati è valutata non solo riguardo ai valori ma anche rispetto al parametro tempo. Un risultato che arriva in ritardo in alcuni ambiti può significare la vita o la morte di una persona.

- Prevedibilità
Il sistema deve essere sempre in grado di prevedere le conseguenze delle decisioni che si troverà a prendere.

- Tolleranza ai sovraccarichi
Bisogna prevedere l’eventualità di sovraccarichi e prendere decisioni a riguardo senza compromettere il corretto funzionamento del sistema.

- Monitorabilità
Deve conoscere se qualcosa sta andando storto al suo interno e essere in grado di segnalarlo.

- Flessibilità
Deve essere modulare per adattarsi il più possibile alle esigenze delle applicazioni che ci gireranno sopra.

Ad esempio problemi che vanno affrontati nell’ottica del “tempo reale” sono ovviamente ampiamente presenti nella società moderna. Basti pensare ai sistemi ABS delle automobili, o ai sistemi di controllo e stabilizzazione degli aeroplani.

Prossimamente inserirò un How To per la compilazione di un kernel Linux RealTime.

Enjoy
Antonio

Nessun commento: