Real-time

Da Wikipedia, l'enciclopedia libera.
Nota disambigua.svg Disambiguazione – Se stai cercando altri significati, vedi Real Time.
Il glass cockpit di un C-141 è un esempio di sistemi real-time.

Real-time (in italiano "tempo reale"), più precisamente real-time computing (RTC), è un termine utilizzato in ambito informatico per indicare le computazioni per i quali la correttezza del risultato dipende non solo dalla correttezza logica ma anche dal tempo di risposta[1][2]. Estendendo la definizione, possono essere anche aggiunti requisiti di affidabilità e interazione con l'ambiente [1].

Un sistema in grado di esegure computazioni real-time, considerato sia dalla parte hardware che quella software, è detto sistema real-time. Trovano applicazione nella maggior parte dei sistemi Mission Critical e Safety Critical, a causa della necessità di reazione ad eventi esterni entro tempi prestabiliti[3]. In questo caso si parla di deadline, ovvero il tempo entro in quale la computazione in reazione ad un evento deve avere terminato[4].

Concetti introduttivi[modifica | modifica wikitesto]

Un sistema real-time garantisce un certo tempo di risposta deciso a design-time. Real-time non è quindi sinonimo di velocità: un sistema real-time può essere estremamente lento, ma garantisce un upper-bound preciso al tempo necessario alla computazione[5]. In ottica di scheduling, l'obiettivo di un sistema normale è minimizzare il tempo di esecuzione dei task; l'obiettivo di un sistema real-time è il completamento dei task nel tempo stabilito.

Per la risoluzione di problemi real-time si usano di solito architetture hardware, sistemi operativi e programmi applicativi dedicati. Le tre componenti (hardware, software di base e software applicativo) sono spesso strettamente legate, in modo da conseguire le necessarie ottimizzazioni sui tempi.

Sistemi operativi real-time[modifica | modifica wikitesto]

Exquisite-kfind.png Lo stesso argomento in dettaglio: Sistema operativo real-time.

I programmi real-time possono essere eseguiti autonomamente (tipico dei sistema embedded) o attraverso un sistema operativo, che in questo caso deve essere un sistema operativo real-time. Nel secondo caso non è quindi sufficiente che il programma sia real-time, ma richiede che anche il sistema operativo fornisca un appropriato scheduling real-time[6]. Esso permette ad applicazioni real-time multiple di essere eseguite sullo stesso sitema; la fattibilità di trovare una politica di scheduling adeguata deve essere verifica a design-time, pena la perdita di deadline. Le applicazioni possono poi essere fornite di priorità, gestita in maniera opportuna dallo scheduling


Classificazione dei sistemi real-time[modifica | modifica wikitesto]

Una prima classificazione dei sistemi real-time riguarda la tollerabilità del non rispetto delle deadline temporali[1][7][8]:

  • Sistema hard real-time: il non rispetto delle deadline non è ammesso; il mancato raggiungimento di una sola deadline può portare a conseguenze catastrofiche nell'ambiente in cui il sistema opera. È tipico delle applicazioni safety-critical;
  • Sistema firm real-time: il mancato rispetto di alcune deadline è amesso purché entro certi limiti; se la deadline è mancata, il risultato non è utilizzabile ma non causa eccessivi problemi;
  • Sistema soft real-time: il mancato rispetto di alcune deadline è amesso purché entro certi limiti; se la deadline è mancata, il sistema può utilizzare il risultato, tipicamente degradando in performance senza causare eccessivi problemi.

Spesso la distinzione tra firm e soft non viene marcata e i due concetti sono considerati equivalenti[9].

Esempi[modifica | modifica wikitesto]

I sistemi delle centrali nucleari necessitano di sistemi hard real-time, in foto la sala della centrale di Leningrado
Un lettore multimediale è un tipico esempio soft real-time

Secondo la precedente classificazione alcuni esempi di sistemi real-time sono:

La necessità di tempi di risposta certi[modifica | modifica wikitesto]

Come già detto i sistemi real-time non sono sistemi veloci, bensì sistemi che garantiscono un certo tempo di risposta. L'interpretazione corretta di tempo di risposta dipende dall'applicazione stessa. Si può considerare il tempo necessario ad effettuare il calcolo e stampare su schermo, oppure il tempo necessario a inviare i comandi ad un attutore.

La correttezza temporale del sistema si rende necessaria quando il sistema interagisce con l'ambiente e deve mantenere una certa sincronia con esso. I sistemi che mostrano all'utente le informazioni dell'ambiente o del sistema stesso (es. sala comandi centrali nucleari, avionica, ecc.) non possono avere un offset temporale rispetto al dato reale. La classificazione in hard,firm e soft non dipende solo dai requisiti temporali, ma soprattutto dall'impatto che un errore avrebbe sull'ambiente. Alcuni sistemi necessitano di real-time precise a causa del loro effetto nell'ambiente nel caso in cui il tempo di risposta fosse troppo ampio; dove vi può essere il pericolo di danno a esseri viventi, diventa vitale un sistema real-time e in particolare hard real-time.

Inoltre, i sistemi informatici che emulano sistemi dinamici di teoria del controllo necessitano di intervalli precisi di campionamento, che se troppo distanti da quelli ideali possono portarlo a essere non stabile[13]. Questo tipo di controllo è essenziale per tutte le applicazioni dell'automazione industriale[14].

Difficoltà di realizzazione[modifica | modifica wikitesto]

La progettazione e la realizzazione di sistemi real-time è estremamente complessa e costosa. Per questo motivo la scelta di utilizzare un sistema real-time deve essere dettata da una vera necessità, in particolare per i sistemi hard real-time. La progettazione di questi sistemi richiede diversi analisi approfondite di timing e di verifica della correttezza del programma stesso.

I vari scogli ai sistemi real-time sono di diversa natura e possono essere riassunti nella seguente classificazione[15]:

  • Complessità dell'ambiente con cui interagire
    • velocità richiesta, numero di task da eseguire, ecc.
    • gestione degli interrupt
  • Ripristino dopo un guasto
    • riconoscimento, isolamento e risoluzione di un guasto, che sia hardware, software, ecc.
    • utilizzo di speciali routine
  • Architetture distribuite
    • gestione della comunicazione con altri sistemi
    • consistenza delle informazioni
    • Load balancing
  • Race condition

Note[modifica | modifica wikitesto]

  1. ^ a b c Shin, Kang G., Parameswaran Ramanathan, Real-Time Computing: A New Discipline of Computer Science and Engineering, in Proceedings of the IEEE, 1994.
  2. ^ Marco Giancola, Sistemi Real-Time (PDF), matematicamente.it. URL consultato il luglio 2016.
  3. ^ Paul Pop, Safety-critical systems, Technical University of Denmark. URL consultato il luglio 2016.
  4. ^ Gianluca Palli, Introduzione ai sistemi real-time (PDF), Università di Bologna. URL consultato il luglio 2016.
  5. ^ Rigutini Leonardo, Sistemi operativi Real-Time (PDF), Università di Siena.
  6. ^ Jürgen Assfalg, Università di Firenze, http://www.dsi.unifi.it/~assfalg/SO/20042005/scheduling-rt.pdf. URL consultato il luglio 2016.
  7. ^ a b Stefan M. Petters, Real-Time Systems (PDF), UNSW Australia. URL consultato il luglio 2016.
  8. ^ a b Donglin Liu, Xiaobo Sharon Hu, Senior Member, IEEE, Michael D. Lemmon, Qiang Ling, Firm Real-Time System Scheduling Based on a Novel QoS Constraint, in IEEE Transactions on Computers, 2006.
  9. ^ Pier Luca Montessoro, I sistemi operativi real-time (PDF), Università degli Studi di Udine. URL consultato il luglio 2016.
  10. ^ Hard and Soft Real-Time, Fedora. URL consultato il luglio 2016.
  11. ^ Hard and soft real time, LWN.net. URL consultato il luglio 2016.
  12. ^ Karthik Channakeshava, Kaustubh S. Phanseg, Luiz A. DaSilva Binoy, Ravindran Scott F. Midkiff, E. Douglas Jensen, IP Quality of Service Support for Soft Real-Time Applications, in IEEE Euromicro Conf. Real-Time Systems, 2005.
  13. ^ (EN) Tarek Abdelzaher, Yixin Diao, Joseph L. Hellerstein, Chenyang Lu, Xiaoyun Zhu, Introduction to Control Theory And Its Application to Computing Systems (PDF).
  14. ^ Human Machine Interface (HMI) Guide (PDF), Texas Instruments.
  15. ^ (EN) Issues in Real-time System Design, eventhelix.com. URL consultato il 20 luglio 2016.

Voci correlate[modifica | modifica wikitesto]