In informatica si parla di un sistema in tempo reale quando questo sistema è in grado di controllare (o pilotare) un processo fisico ad una velocità adeguata all'evoluzione del processo controllato.
I sistemi IT in tempo reale si differenziano dagli altri sistemi IT tenendo conto dei vincoli di tempo il cui rispetto è importante quanto l'accuratezza del risultato, in altre parole il sistema non deve semplicemente fornire risultati esatti, ma deve consegnarli nei termini imposti.
I sistemi informatici in tempo reale sono oggi presenti in molti settori di attività:
e nel settore della new economy attraverso la sempre crescente esigenza di elaborazione e trasmissione di informazioni (video, dati, telecontrollo, realtà virtuale, ecc .).
Lo sviluppo di sistemi in tempo reale richiede quindi che ciascuno degli elementi del sistema stesso sia in tempo reale, vale a dire che consenta di tenere conto dei vincoli di tempo e della priorità di ciascuna delle attività. Un sistema operativo progettato per tenere conto di questi vincoli è chiamato sistema operativo in tempo reale .
Per garantire il rispetto di termini o vincoli è necessario che:
Un'attività è generalmente caratterizzata da un tempo di calcolo ( C i ), una scadenza ( D i ) che è la data in cui l'attività deve aver completato la sua esecuzione e, nel caso di attività periodiche, da un periodo ( T i ) che rappresenta la durata che separa i suoi istanti di attivazione. Un'esecuzione dell'attività è chiamata istanza.
Si distingue tra strict o hard real time (dall'inglese hard real-time ) e flessibile o soft real time (in inglese soft real-time ) in base all'importanza data ai vincoli temporali:
Tempo reale rigoroso non tollera alcun superamento di questi vincoli, come spesso accade quando tali superamenti possono portare a situazioni critiche o addirittura catastrofiche: pilota automatico dell'aereo, sistema di monitoraggio della centrale nucleare, ecc. Si può considerare che un rigoroso sistema in tempo reale deve rispettare determinati limiti di tempo anche nella peggiore situazione di esecuzione possibile. Tempo reale flessibile si adatta al superamento dei vincoli di tempo entro certi limiti oltre i quali il sistema diventa inutilizzabile o doloroso: videoconferenza, giochi in rete, ecc. Un sistema flessibile in tempo reale deve rispettare i suoi limiti per una media delle sue esecuzioni. È tollerato un superamento eccezionale, che può essere compensato a breve termine.Teoricamente, il progettista di un cosiddetto rigoroso sistema in tempo reale dovrebbe essere in grado di dimostrare che i limiti di tempo non verranno mai superati qualunque sia la situazione. Questa verifica è chiamata "test di accettabilità", "analisi di fattibilità" o anche "controllo di ammissione"; fa appello alla teoria della schedulazione . Dipende dallo scheduler utilizzato e dalle caratteristiche delle attività di sistema.
Per un sistema flessibile, ci si potrebbe accontentare di misurazioni statistiche ottenute su un prototipo.
Per qualsiasi sistema di attività, la seguente condizione è necessaria ma non sufficiente per la sua fattibilità:
Con:
Un valore maggiore di 1 significherebbe che il sistema richiede più tempo di esecuzione di quanto il processore possa fornire.
Il tempo di risposta nel caso peggiore di un'attività è, tra tutti i possibili scenari di esecuzione del sistema, il tempo più lungo tra l'attivazione di questa attività e il suo tempo di conclusione.
Un'attività è fattibile se il suo tempo di risposta nel caso peggiore è inferiore o uguale alla sua scadenza. Un sistema è fattibile se tutti i compiti che lo compongono sono realizzabili. Il costo è esponenziale.
Un elenco non esaustivo è disponibile qui .
Jane WS Liu, "Real-time Systems", Prentice Hall, 2000.