La prima cosa che ci viene in mente quando sentiamo la parola sistema operativo è il programma software utilizzato nei nostri computer desktop e laptop come Microsoft Windows, Linux, Ubuntu, ecc. E Android per smartphone. In effetti, la maggior parte dei dispositivi elettronici digitali gestisce una sorta di sistema operativo all'interno del quale è sviluppato dal programma microcontrollore. L'evoluzione del microcontrollore ha aperto la strada a numerose applicazioni di sistemi embedded che svolgono un ruolo cruciale nella nostra vita quotidiana in un modo o nell'altro.
Uno di questi sistemi di cui abbiamo sentito parlare ultimamente è il sistema operativo in tempo reale, o semplicemente chiamato "RTOS". RTOS è un sistema operativo utilizzato per applicazioni in tempo reale che indica le applicazioni che elaborano i dati nel momento in cui si verificano entro un limite di tempo specificato. QNX e VxWorks sono due diversi sistemi operativi in tempo reale, ampiamente utilizzati in ambienti industriali e accademici. Lo scopo dell'articolo è di fare un confronto imparziale tra i due.
QNX è un sistema operativo commerciale in tempo reale inizialmente sviluppato per sistemi embedded ed è stato originariamente sviluppato da Quantum Software Systems nei primi anni '80. La società con sede in Canada è stata in seguito ribattezzata QNX Software Systems e infine acquisita da Research in Motion (RIM) per essere utilizzata come base per il proprio BlackBerry 10 OS e il popolare BlackBerry Playbook. La versione del sistema operativo utilizzata nel Playbook era QNX Neutrino, che è stata costruita su una vera architettura microkernel. QNX è stato il primo sistema operativo basato su microkernel di successo commerciale. QNX è fondamentalmente un sistema operativo simile a Unix basato su un vero design microkernel e un'architettura modulare in cui gli elementi del sistema operativo vengono eseguiti come task, noti come Resource Managers, che consentirebbero agli sviluppatori di disattivare qualsiasi funzionalità che pensano non sia richiesto più nel particolare sistema. La cosa migliore di QNX è che si basa sulla comunicazione di interprocessi basata sui messaggi.
VxWorks è un sistema operativo in tempo reale progettato specificamente per il calcolo distribuito per applicazioni in tempo reale con sistemi embedded. È un sistema operativo proprietario in tempo reale sviluppato da Wind River Systems, un'azienda californiana specializzata nello sviluppo di software embedded per sistemi intelligenti connessi. VxWorks è l'RTOS leader del settore che ha sviluppato sistemi e dispositivi embedded per oltre tre decenni. È un kernel monolitico con ampie comunicazioni tra processi e funzioni di sincronizzazione. Ogni build di VxWorks è unica a causa della sua architettura in cui l'intero sistema operativo funziona nello spazio del kernel, il che significa che tutti i servizi del kernel e i servizi utente esistono nello stesso spazio di indirizzi che rende più veloce l'esecuzione del sistema operativo. Fornisce funzioni di debug, monitoraggio delle prestazioni, gestione della memoria, pianificazione della CPU e altre funzioni del sistema operativo tramite chiamate di sistema.
Entrambi sono sistemi operativi in tempo reale davvero unici, specificamente concepiti per applicazioni in tempo reale con sistemi embedded, ciascuno con un sacco di componenti diversi con funzionalità diverse. Entrambi i sistemi sono ampiamente utilizzati in ambienti industriali e accademici di grandi dimensioni e sono attivi da decenni. QNX è un RTOS commerciale sviluppato da Quantum Software Systems, con sede in Canada, nei primi anni '80, che è stato successivamente acquisito da RIM nel 2010. VxWorks è un software proprietario sviluppato da Wind River Systems con sede in California, leader del settore specializzato nella realizzazione di software embedded per prodotti e sistemi intelligenti connessi.
Entrambi i sistemi operativi utilizzano il kernel in tempo reale per le applicazioni mission-critical che elaborano i dati così come sono nel significato del soggetto soggetto a un vincolo in tempo reale che garantisce la risposta entro limiti di tempo predefiniti, altrimenti noti come "scadenze". La differenza principale risiede nell'architettura - mentre QNX è basato su un'architettura di passaggio dei messaggi, VxWorks si presta all'architettura di memoria condivisa. Il passaggio dei messaggi è fondamentale per la progettazione del kernel che consente al sistema di passare le informazioni da un'attività all'altra o a più altre nel sistema. L'architettura di memoria condivisa si riferisce a un sistema che ha il proprio spazio di indirizzamento privato per memorie distribuite fisicamente.
Una delle principali differenze tra i due sistemi operativi in tempo reale è che QNX è un OS basato su microkernel mentre VxWorks è un kernel monolitico. Un microkernel è come un piccolo sistema operativo che sfrutta le chiamate di sistema per gestire i servizi di base come la gestione dello spazio degli indirizzi, la gestione dei thread e le comunicazioni tra processi. Si riferisce a un sistema che richiede un set limitato di primitive e una dipendenza software minima per implementare un sistema operativo. Un kernel monolitico, d'altra parte, gestisce tutti i servizi di base e i servizi definiti dall'utente comprese le comunicazioni tra processi in uno spazio del kernel protetto. Come kernel monolitico, VxWorks è autonomo.
Ogni thread o processo ha la sua priorità in QNX. Sotto QNX, tutti i processi vengono eseguiti su una base preventiva basata su priorità che indica che il processo con la priorità più alta accede prima alla CPU e le priorità vanno da 0 a 31. La pianificazione avviene in tempo reale e ogni thread eredita la priorità del genitore per impostazione predefinita. Quando due thread condividono la stessa priorità, vengono utilizzati altri metodi di pianificazione da QNX come FIFO, Round-Robin e Sporadic Scheduling. VxWorks, d'altra parte, utilizza solo due tipi di algoritmi di pianificazione, pianificazione preventiva basata su priorità e Round-Robin. Insieme offrono agli utenti un maggiore grado di controllo per una pianificazione efficiente.
Entrambi sono sistemi operativi in tempo reale basati su kernel, progettati per applicazioni in tempo reale che richiedono l'elaborazione e il completamento delle attività entro un limite di tempo predefinito, altrimenti definite come scadenze. Entrambi sono nel business da oltre 25 anni e sono specializzati nello sviluppo di prodotti e sistemi embedded, ma è qui che finiscono tutte le somiglianze. QNX è un sistema operativo in tempo reale basato su microkernel che è piuttosto affascinante da solo, grazie alla sua architettura basata su message passing, ideale per realizzare sistemi distribuiti affidabili. VxWorks è un kernel monolitico basato su un'architettura di memoria condivisa che lo rende ideale per grandi ambienti industriali come sistemi automobilistici, avionica, elettronica di consumo, ecc..