Real Time

Argomenti trattati : Real time, Differenze tra Hard real-time e soft real-time

Argomenti trattati : Real time, Differenze tra Hard real-time e soft real-time

Real time
Sostanzialmente un sistema in tempo reale è un sistema che deve reagire ad un dato stimolo entro un tempo predefinito. Da un punto di vista puramente teorico la durata dell’intervallo che intercorre tra ricezione dello stimolo e risposta non ha importanza: un sistema in tempo reale non è necessariamente veloce, ma è fondamentale che sia deterministico, ossia che la risposta arrivi entro tolleranze ben precise e note a priori, non dopo ma nemmeno prima.
Un interessante parallelo tra sistemi operativi ‘tradizionali’ e sistemi operativi real-time può essere effettuato scambiando i termini ‘logico’ e ‘temporale’ nella descrizione delle loro caratteristiche peculiari.
Un buon sistema operativo ‘tradizionale’ deve garantire un’elaborazione corretta dal punto di vista logico; è comunque possibile tollerare che la risposta arrivi leggermente in anticipo o leggermente in ritardo (ad esempio il risultato dell’elaborazione di un foglio di calcolo riportante il bilancio di un’azienda non deve arrivare esattamente 10 ms dopo aver battuto l’ultimo ‘enter’, ma è importante che i conti tornino nei limiti della precisione macchina).
Un buon sistema operativo in tempo reale deve garantire un’elaborazione corretta dal punto di vista temporale; è comunque possibile tollerare che la risposta sia leggermente incorretta (ad esempio la quantità di carburante da convogliare nel turboreattore di un aereo da combattimento non deve necessariamente essere esatta al grammo, ma è fondamentale che venga iniettata esattamente a 10 ms da quando il pilota ha impartito il comando per sincronizzarsi con i movimenti dei deflettori, pena una manovra errata).
Questo non significa che ad un RTOS sia concesso di dare risposte errate, ma solo che l’enfasi deve essere posta sul vincolo temporale. Questo tipo di sistemi deve consentire allo sviluppatore di poter conoscere in anticipo i casi pessimi dei tempi di risposta ai vari servizi che offrono.

Hard real-time e soft real-time
Una distinzione più sottile e se vogliamo più controversa é quella tra ‘hard’ real-time e ‘soft’ real-time.
In linea di massima i sistemi ‘hard’ richiedono un rispetto rigido dei vincoli di precisione temporale, in quanto mancare una scadenza significherebbe invalidare il funzionamento dell’intero sistema; quelli ‘soft’ si limitano ad un rispetto statistico dei vincoli che, se forzati, portano ad una degradazione dell’applicazione che può però essere tollerata in funzione del suo costo per l’utilizzatore. Sostanzialmente questa distinzione si traduce nella quantificazione dei costi di una eventuale inesattezza temporale del sistema. In un sistema operativo tradizionale un errore di questo tipo può non avere importanza; un esempio potrebbe essere il foglio di calcolo che restituisce il risultato con ritardi che dipendono dalle altre applicazioni attive, dal fatto che si è spostato il mouse durante il calcolo o che è stato segnalato l’arrivo della posta elettronica: non ci sono costi associati a questa aleatorietà essenzialmente trasparente all’utente. In un sistema operativo ‘soft real-time’ l’inesattezza temporale è importante ma può comunque essere tollerata entro certi limiti; in un sistema ‘hard real-time’ anche un solo errore porta a costi eccessivi per l’utente se non addirittura alla perdita del sistema.
Un esempio di sistema in tempo reale in una catena di montaggio può essere rappresentato da un robot manipolatore il cui braccio deve trovarsi sul pezzo nel momento in cui passa: non dopo ma nemmeno prima.
Se mancare il pezzo comporta solo una riduzione della produzione per l’aumentare dei pezzi difettosi allora il sistema è ‘soft real-time’; se invece comporta l’arresto della catena di montaggio perché il braccio ostacola lo scorrimento dei pezzi allora si tratta di ‘hard real-time’.
I sistemi in hard real-time non possono permettersi di compensare il caso pessimo con un buon andamento medio.
Si è detto prima che in teoria la velocità non è una caratteristica di un RTOS: secondo questa linea di pensiero non entra nemmeno nella distinzione tra hard e soft real-time; nella pratica, d’altronde, essa ha una importanza rilevante dato che al di sotto di una certa soglia un sistema, per quanto deterministico, non sarebbe in grado di assolvere alle funzioni richieste da una elaborazione in tempo reale. Ad esempio un sistema che si aggiorna esattamente ogni secondo non potrà certo essere impiegato per analizzare segnali con frequenze dell’ordine del kHz.