buongiorno,vorrei sapere,se non e’ troppo specifico,cosa significa “sistema operativo real time” come il sistema vxWorks.grazie

La parola
“real-time” o anche “tempo reale” è ormai entrata nell’uso comune e corrisponde
più o meno a concetti come “subito”, “velocemente” o simili.

In senso
tecnico invece il termine ha un significato più preciso e sta ad indicare
programmi o procedure il cui risultato dipende non solo dai dati di ingresso e
dalle operazioni che su questi si applicano, ma anche da fattori temporali. Un
risultato corretto, ma che non viene prodotto entro i limiti temporali previsti,
non può essere in questo senso considerato corretto in una applicazione
real-time.

Si noti che ciò non è necessariamente connesso con
la velocità di risposta o di esecuzione. Un programma di “word processing”
può richiedere caratteristiche di elevata velocità di elaborazione,
ma non di “tempo reale” in quanto la correttezza del risultato finale (diciamo,
la presentazione di una pagina correttamente impaginata) è indipendente
dal tempo necessario per ottenerlo. Al contrario il programma che controlla i
movimenti di un ascensore dipende strettamente dal tempo per il suo funzionamento:
ad esempio il moto della cabina deve essere annullato entro un tempo massimo dopo
che è stato ricevuto il segnale che indica che essa si trova in corrispondenza
del piano di arrivo, ma non prima che questo segnale sia giunto. Il risultato
di compiere una operazione troppo presto o con eccessivo ritardo in questo caso
può essere assai diverso da quanto si desidera.

I sistemi operativi
real-time sono sistemi operativi le cui caratteristiche consentono di realizzare
programmi per applicazioni real-time. Sono indispensabili per realizzare tutti
quei sistemi dedicati al controllo di apparecchiature e di processi, dai piccoli

elettrodomestici agli impianti industriali.

Le principali caratteristiche di
tali sistemi operativi sono:

  • Devono avere una architettura “multithread
    preemptive”, ovvero devono gestire contemporaneamente più sottprocessi.
  • Devono avere meccanismi per effettuare la sincronizzazione dei sottoprocessi.
  • Devono essere deterministici, ovvero avere un comportamento predicibile in
    tutte le condizioni operative.
  • Devono, in particolare, garantire tempi di
    intervento predicibili.

Questo caratteristiche non sono presenti nei sistemi
operativi non real-time (ad esempio Unix e la famiglia Windows) in cui, ad esempio,
i tempi di intervento possono essere garantiti in media, ma non in qualunque condizione
operativa.

Naturalmente in pratica i sistemi operativi real-time forniscono
molti altri supporti di programmazione indispensabili per realizzare questo tipo
di applicazioni, ma una discussione più dettagliata sarebbe di natura troppo
tecnica per essere trattata in queste pagine.

Per gli approfondimenti si rimanda
ad alcuni testi (tutti di livello universitario):

  • Kopetz, H.: “Real-Time
    Systems, Design Principles for Distributed Embedded Applications”. Kluwer Academic
    Publishers.
  • J.E. Cooling: “Software Design for Real-time Systems”, Chapman
    and Hall.
  • Mathai Joseph: “Real-Time Systems, 1/e”, Prentice Hall.
  • O
    alle numerose risorse in rete:

    comp.realtime, il newsgroup generale

    ed i newsgroup dedicati ai principali sistemi operativi real-time:

    news:comp.os.lynx, LynxOS

    news:comp.os.os9, os9

    news:comp.os.qnx, QNX

    news:comp.os.vxworks, VxWorks

    Fra i siti Web, un buon punto di partenza è la Real-Time Encyclopaedia
    (http://www.realtime-info.be).