# RTX

RTX è un'Estensione Tempo Reale (Real Time eXtension) per Microsoft Windows, sviluppata dall'azienda americana IntervalZero Inc. di Waltham (MA).

## Descrizione di RTX

RTX estende le funzionalità di Windows trasformandolo di fatto in un Sistema Operativo Real Time (RTOS), permettendo quindi di sviluppare ed eseguire processi tempo reale mantenendo al contempo invariate tutte le funzionalità offerte da Windows (interfaccia grafica, connettività di rete, amplia offerta di applicativi).
RTX è disponibile per Windows a 64 bit (RTX64) e per Windows a 32 bit (RTX).

## Storia di RTX

RTX è stato sviluppato nel 1996 (RTX 3.1) per Windows NT 4.0 dall'azienda che allora si chiamava VenturCom Inc. e che, negli stessi anni, ha concepito Component Integrator, uno strumento per creare installazioni personalizzate (embedded) di Windows NT. Component Integrator è stato poi licenziato a Microsoft che lo ha usato come base per il suo Windows NT Embedded 4.0 pubblicato nel 1999.
Nel 2004 VenturCom ha cambiato nome in Ardence, estendendo la propria gamma di prodotti con soluzioni per la gestione remota dei sistemi operativi.
Ardence è stata quindi acquisita da Citrix Systems nel 2006,
Nel 2008 un gruppo di dipendenti e dirigenti Ardence ha creato lo spin-off IntervalZero, partecipata di Citrix Systems, per focalizzarsi unicamente sulle soluzioni tempo reale.

## Architettura di RTX

RTX è un programma di Microsoft Windows che si installa a livello Kernel ed aggiunge al Sistema Operativo un nuovo insieme di processi tempo reale gestiti con un proprio scheduler real-time separato; questi processi possono utilizzare Clock e Timer tempo reale (con la risoluzione minima di 1 µsec) ed accedere direttamente alle risorse hardware (memoria fisica, interrupt, porte di I/O, Bus, ...).
Queste funzionalità aggiuntive sono ottenute grazie all'estensione (da qui il nome Windows Real Time Extensions) all'Hardware Abstraction Layer (HAL), cioè quello strato di Windows che si pone fra l'Hardware ed il Kernel del sistema operativo. Ciò significa che RTX non è un secondo sistema operativo tempo reale che si pone a fianco di Windows o che lo esegue come un proprio processo, RTX è effettivamente una soluzione nativa di Windows, formata da un insieme di driver e servizi, che però, in più degli altri, hanno la possibilità di accedere ad un insieme di funzionalità tempo reale messe a disposizione dalla estensione al HAL, che solo essi conoscono e che quindi solo essi possono sfruttare.
Nei sistemi multicore RTX può inoltre essere configurato per ottenere in via esclusiva l'utilizzo di uno o più core per l'esecuzione dei propri processi o thread in modo parallelo.
La versione a 32 bit permette l'assegnazione ad RTX sino a 31 core su 32, ove essi presenti, la versione a 64 bit permette l'assegnazione sino a 63 core su 64.

## Sviluppo di applicativi RTX

Gli applicativi RTX si sviluppano in C e C++ e si compilano utilizzando Microsoft Visual Studio nel cui IDE RTX installa alcuni wizard per la creazione dei progetti RTX ed un proprio add-on per il debugging simbolico dei propri processi.
Lo sviluppo di applicativi RTX è basato su funzioni Win32 integrate da funzioni proprietarie specifiche di RTX (RTAPI) che implementano le caratteristiche tempo reale non presenti in Windows.

## RTX e le risorse di sistema

Gli applicativi RTX permettono di pilotare direttamente le risorse hardware del PC, ma richiedono l'utilizzo esclusivo di queste risorse. i driver di Windows infatti non sono real time e l'eventuale condivisione di una risorsa, ad esempio in interrupt, con un driver standard di Windows comprometterebbe il suo utilizzo in tempo reale.
Il dispositivo viene quindi "convertito" per essere pilotato da RTX e non più dal driver Windows standard; questo significa che se una scheda del PC deve essere pilotata da RTX (ad esempio una scheda di rete) questa scheda non sarà più "vista" da Windows come scheda di rete standard.