RTEMS
# RTEMS

RTEMS (Real-Time Executive for Multiprocessor Systems) è un sistema operativo di tipo real-time distribuito in modalità open source e progettato per sistemi embedded.

L'acronimo RTEMS deriva inizialmente dal nome del progetto, Real-Time Executive for Missile Systems, che poi fu trasformato in Real-Time Executive for Military Systems e quindi nel più neutro Real-Time Executive for Multiprocessor Systems. Lo sviluppo dell'RTEMS iniziò verso la fine degli anni 80 del secolo scorso, mentre le prime versioni disponibili, scaricabili tramite ftp, risalgono al 1993. RTEMS, nascendo in ambiente militare, ha molto utilizzato il linguaggio Ada, che costituisce una peculiarità del sistema rispetto ad altri.

RTEM viene gestito dalla società OAR Corporation, con la quale coopera un comitato di coordinamento che include una rappresentanza degli utenti di questo sistema.

RTEMS è stato portato su molte architetture e CPU, tra cui:

* ARM
* Blackfin
* ColdFire
* Texas Instruments C3x/C4x DSPs
* H8/300
* i386, Pentium, e i membri della famiglia X86
* 68K
* MIPS
* Nios II
* PowerPC
* SuperH
* SPARC

Una particolarità di RTEMS, rispetto ad altri sistemi operativi, è il supporto di molte API standard, incluse le API POSIX e le API ITRON del progetto TRON. Le API native di RTEMS sono ora denominate "Classic RTEMS API" e furono originariamente basate sulle specifiche RTEID, acronimo di Real-Time Interface Executive Definition. RTEMS include lo stack TCP/IP derivato da FreeBSD e supporta molti filesystems, tra cui NFS e il FAT, il file system utilizzato dallo storico DOS (FAT16) fino al sistema Microsoft Windows98 (FAT32).

Il sistema RTEMS di base non prevede l'uso di funzioni MMU evolute, questo significa che utilizza uno schema di tipo mono processo, con lo spazio di memoria comune a tutto il codice. Nello schema POSIX questo tipo di implementazione è definita come sistema multithread a singolo processo.

Questo si riflette sulle API RTEMS che supportano tutti i servizi POSIX tranne quelli relativi alla mappatura di memoria, al fork dei processi e all'uso di memoria condivisa (shared memory).

RTEMS supporta il profilo POSIX 52, che è definito "single process, threads, filesystem".

RTEMS viene utilizzato in molti contesti applicativi: la comunità EPICS include molte persone che sono dei membri di supporto attivi del progetto.

RTEMS è anche un progetto popolare negli ambienti aerospaziali, grazie al suo supporto multiprocessore che include CPU SPARC, ERC32, LEON, MIPS Mongoose-V, Coldfire, e i vari PowerPC, che sono molto utilizzati nei campo aerospaziale.

RTEMS è anche utilizzato come software di controllo del componente EUT Electra UHT Transceiver inviato su Marte (vedi Mars Reconnaissance Orbiter).

RTEMS viene distribuito con una licenza GPL modificata, che permette l'uso di oggetti RTEMS con altri file proprietari, senza richiedere che l'applicazione risultante sia completamente GPL. Questa licenza è basata sulla GNAT Modified General Public License, opportunamente modificata per non riferirsi esclusivamente al linguaggio Ada.

