Sistemi operativi Sistemi operativi real-time Di cosa parliamo in questa lezione? real-time Marco Cesati Marco Cesati Lezione R13

Sistemi operativi real-time – II In questa lezione descriviamo brevemente alcuni dei più diffusi Schema della lezione sistemi operativi real-time Schema della lezione Caratteristiche comuni Caratteristiche comuni

VxWorks VxWorks

LynxOS LynxOS 1 Caratteristiche comuni degli RTOS QNX QNX Sistemi embedded real-time 2 eCos VxWorks eCos Windows 3 LynxOS Windows come RTOS Linux come RTOS 4 15 gennaio 2013 QNX Neutrino 5 eCos 6 Windows Embedded CE 7 Linux come RTOS Marco Cesati Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata

SERT’13 R13.1 SERT’13 R13.2

Sistemi operativi Sistemi operativi Caratteristiche comuni dei principali RTOS real-time La schedulazione nei principali RTOS real-time Marco Cesati Marco Cesati Corrispondenza agli standard: generalmente le API sono Almeno 32 livelli di priorità differenti proprietarie, ma gli RTOS offrono anche compatibilità Possibilità di scelta fra FIFO e Round Robin per la (compliancy) o conformità (conformancy) allo standard gestione dei task nello stesso livello di priorità Real-Time POSIX Possibilità di cambiare la priorità a run-time Modularità e Scalabilità: il kernel ha una dimensione Schema della lezione Schema della lezione Caratteristiche comuni Caratteristiche comuni (footprint) ridotta e le sue funzionalità sono configurabili Generalmente non supportano in maniera nativa politiche VxWorks VxWorks di scheduling a priorità dinamica (es. EDF) o la possibilità Dimensione codice: spesso basati su LynxOS LynxOS QNX di integrare server a conservazione di banda, ecc. QNX Velocità e Efficienza: basso overhead per cambi di eCos Offrono meccanismi di controllo dell’inversione di priorità: eCos contesto, latenza delle interruzioni e primitive di Windows Windows tipicamente priority inheritance, alcuni RTOS anche sincronizzazione Linux come RTOS Linux come RTOS priority ceiling Porzioni di codice non interrompibile: generalmente molto corte e di durata predicibile Risoluzione nominale di timer e orologi di un nanosecondo, ma l’accuratezza non è mai sotto a 100 ns Gestione delle interruzioni “separata”: interrupt handler a causa della latenza di gestione delle interruzioni corto e predicibile, ISR lunga e di durata variabile Gestione della memoria: possibilità di utilizzare memoria virtuale e protezione dello spazio di indirizzi kernel Alcuni meccanismi, come quelli di controllo dell’inversione di (disabilitabili); non esiste in genere la paginazione priorità, possono essere abilitati o disabilitati in fase di progetto

SERT’13 R13.3 SERT’13 R13.4 Sistemi operativi Sistemi operativi Quanti sono gli RTOS? real-time Quanti sono gli RTOS? (2) real-time Marco Cesati Marco Cesati Esistono molti sistemi operativi RTOS, in particolare per il Abassi, AMOS, AMX RTOS, ARTOS (Locamation), ARTOS (Robotu), Atomthreads, AVIX, segmento embedded BeRTOS, BRTOS, CapROS, ChibiOS/RT, ChorusOS, ChronOS, CMX RTOS, cocoOS, Concurrent /M, Concurrent DOS, , COS, CooCox CoOS, Deos, DioneOS, DNIX, Ad esempio: GEC DOS, DrRtos, DSPnano RTOS, DSOS, eCos, eCosPro, embOS, Embox, ERIKA Schema della lezione Schema della lezione VxWorks Enterprise, EROS, Femto OS, FlexOS, FreeRTOS, FunkOS, Fusion RTOS, Helium, Caratteristiche comuni HP-1000/RTE, Hybridthreads, IBM 4680 OS, IBM 4690 OS, INTEGRITY, IntervalZero Caratteristiche comuni LynxOS VxWorks VxWorks RTX, ITRON, µITRON, ioRTOS, iRTOS, KolibriOS, LynxOS, MaRTE OS, MAX II,IV, LynxOS LynxOS QNX MenuetOS, Micrium µC/OS-II, Micrium µC/OS-III, Milos, Microsoft Invisible Computing QNX QNX (MMLite), MP/M, MERT, Multiuser DOS, Nano-RK, Neutrino, Nokia OS, Nucleus OS, Windows CE eCos eCos Linux Windows NuttX, On Time RTOS-32, OS20, OS21, OS4000, OPENRTOS, OSA, OSE, OS-9, OSEK, Windows Linux come RTOS Phar Lap ETS, PaulOS, PICOS18, picoOS, Phoenix-RTOS, PikeOS, Portos,POK, Linux come RTOS eCos PowerTV, Prex, Protothreads, pSOS, QNX, Q-Kernel, QP, RDOS, REAL/32, Real-time PikeOS Linux (CONFIG_RT_PREEMPT), REX OS, RSX-11, RT-11, RTAI, RTEMS, rt-kernel, ThreadX RTLinux, RT-, RTXC Quadros, SafeRTOS, Salvo, SCIOPTA, scmRTOS, SDPOS, RTEMS SHaRK, SimpleAVROS, SINTRAN III, Sirius RTOS, SMX RTOS, SOOS Project, OS, SYS/BIOS, Talon DSP RTOS, TargetOS, T-Kernel, THEOS, ThreadX, Trampoline Embedded Operating System (OSEK and AUTOSAR), TNKernel, Transaction Processing Facility, OS-9 TRON project, TUD:OS, Unison RTOS, -RTR, µTasker, u-velOSity, VRTX, Windows Nucleus OS CE, , xPC Target, Y@SOS, MontaVista Linux, µnOS, uOS

SERT’13 R13.5 SERT’13 R13.6

Sistemi operativi Sistemi operativi VxWorks real-time Gestione delle interruzioni in VxWorks real-time Marco Cesati Marco Cesati VxWorks è un RTOS commerciale prodotto dalla WindRiver (www.windriver.com) Le Interrupt Service Routine (ISR) eseguono in un Installato su oltre 500 milioni di dispositivi contesto differente rispetto a quello di tutti i task ed a priorità più elevata di quelle dei task Basato sul microkernel Wind Schema della lezione Schema della lezione Caratteristiche comuni È possibile aggiustare la priorità di interruzioni provenienti Caratteristiche comuni È utilizzato in sistemi ad elevata affidabilità con VxWorks da particolari periferiche VxWorks certificazione DO-178B livello A, Arinc 653, IEC 61508 LynxOS LynxOS QNX Ciascuna ISR può essere interrotta da una ISR di priorità QNX Ha un ambiente di sviluppo basato su Eclipse eCos eCos superiore (WorkBench) Windows Windows Linux come RTOS Linux come RTOS Supporta lo sviluppo cross-platform e semplifica la Le ISR condividono un unico stack (che deve essere creazione delle toolchain di compilazione e collegamento abbastanza grande in rapporto al massimo livello di annidamento di interruzioni richiesto dal progetto) Adatto sia per sistemi embedded che per sistemi con molte risorse Le interruzioni possono essere disabilitate o abilitate mediante le API proprietarie intLock() ed Le API (interfaccie per le applicazioni) sono proprietarie intUnLock() Fornisce anche un’interfaccia di compatibilità per le API POSIX Real-Time

SERT’13 R13.7 SERT’13 R13.8 Sistemi operativi Sistemi operativi Schedulazione in VxWorks real-time Gestione della memoria e comunicazione in VxWorks real-time Marco Cesati Marco Cesati

Se presente, può utilizzare un dispositivo MMU (Memory I task del sistema sono in generale interrompibili Management Unit)

Lo scheduler è a priorità fissa a livello di task per realizzare memoria virtuale Schema della lezione Schema della lezione Task di pari priorità possono essere gestiti con politiche Caratteristiche comuni per proteggere lo spazio di indirizzamento Caratteristiche comuni FIFO oppure Round Robin VxWorks VxWorks LynxOS sono comunque meccanismi disabilitabili LynxOS È possibile disabilitare l’interrompibilità di un task QNX QNX (API proprietarie taskLock() e taskUnLock()) eCos eCos Windows Supporta i principali meccanismi di comunicazione fra task: Windows Supporta il meccanismo di priority inheritance Linux come RTOS Linux come RTOS Memoria condivisa Supporta architetture SMP (multiprocessore simmetrico) ed architetture AMP (multiprocessore asimmetrico) Semafori e mutex

Consente di specificare la CPU preferenziale di Code di messaggi e pipe esecuzione di un task (taskCpuAffinitySet()) Segnali

SERT’13 R13.9 SERT’13 R13.10

Sistemi operativi Sistemi operativi LynxOS real-time Gestione delle interruzioni in LynxOS real-time Marco Cesati Marco Cesati LynxOS è una linea di RTOS commerciali prodotti dalla LynuxWorks (www.lynuxworks.com) La gestione delle interruzioni è di tipo “separata”: Esistono diverse versioni, tra le quali: LynxOS RTOS: per sistemi embedded Schema della lezione La prima parte della gestione è effettuata a priorità più Schema della lezione LynxOS-SE RTOS: per sistemi partizionati con Caratteristiche comuni elevata rispetto a quella dei task Caratteristiche comuni applicazioni POSIX, Linux e conformi a Arinc 653 VxWorks VxWorks LynxOS Nel caso la prima parte non completi la gestione LynxOS LynxOS-178 RTOS: per sistemi safety-critical, certificabili QNX dell’interruzione, viene impostata una interruzione QNX DO-178B livello A e Arinc 653 eCos (software) asincrona per interrompere il kernel eCos Windows Windows Il cuore di tutti questi SO è LynxOS RTOS: Linux come RTOS Non appena il kernel è in esecuzione in modalità Linux come RTOS interrompibile, viene schedulato un thread per la gestione Utilizzato in milioni di dispositivi secondaria dell’interruzione

Compatibile con l’ABI (Application Binary Interface) di Il thread esegue alla priorità del task che ha effettuato Linux l’“apertura” del device che ha generato l’interruzione Utilizza un kernel monolitico L’ambiente di sviluppo è tipicamente “cross-platform” e basato su Eclipse

SERT’13 R13.11 SERT’13 R13.12 Sistemi operativi Sistemi operativi Lo scheduler di LynxOS real-time Altri dettagli su LynxOS real-time Marco Cesati Marco Cesati

I task di LynxOS sono in generale interrompibili Schema della lezione Ha supporto completo (ma disabilitabile) per i meccanismi Schema della lezione Caratteristiche comuni di memoria virtuale e protezione della memoria Caratteristiche comuni Lo scheduler è a priorità fissa, con 256 livelli di priorità VxWorks VxWorks

LynxOS Ha supporto per il meccanismo di allocazione della LynxOS Task di uguale priorità sono gestiti come FIFO o Round QNX memoria “su richiesta” (demand paging) QNX Robin eCos eCos

Windows Supporta architetture SMP Windows

È disponibile anche uno scheduler “non-preemptive”, in Linux come RTOS Linux come RTOS cui i task non vengono interrotti da altri task È conforme allo standard POSIX, quindi possiede tutti i meccanismi di comunicazione e sincronizzazione fra task Implementa il protocollo di priority inheritance sui semafori previsti dallo standard

SERT’13 R13.13 SERT’13 R13.14

Sistemi operativi Sistemi operativi QNX Neutrino real-time Lo scheduler di QNX Neutrino real-time Marco Cesati Marco Cesati QNX Neutrino è un RTOS commerciale prodotto da QNX Software Systems (www..com) I task sono interrompibili Lo scheduler principale è a priorità fissa Basato su microkernel di dimensione estremamente ridotta Schema della lezione Task di pari priorità sono gestibili tramite FIFO o Round Schema della lezione Caratteristiche comuni Robin Caratteristiche comuni Molto utilizzato soprattutto nel settore automotive VxWorks VxWorks LynxOS Utilizza 256 livelli di priorità LynxOS Conforme allo standard POSIX QNX QNX eCos Implementa il protocollo di priority inheritance sui mutex eCos È progettato attorno ad un meccanismo di scambio di Windows POSIX Thread Windows messaggi e segnali, implementato nel microkernel Linux come RTOS Linux come RTOS È supportato anche uno sporadic scheduler che consente Tutti i servizi non essenziali sono forniti da applicazioni di implementare server sporadici per la gestione di task (server) in spazio utente aperiodici

Gestione delle interruzioni di tipo “separata” Il server sporadico è implementato per mezzo di un meccanismo che fa variare la priorità del task tra un valore Le interruzioni possono essere annidate alto (budget non esaurito) ed un valore basso (budget Le interruzioni possono essere abilitate o disabilitate esaurito)

SERT’13 R13.15 SERT’13 R13.16 Sistemi operativi Sistemi operativi Architettura di QNX Neutrino real-time eCos real-time Marco Cesati Marco Cesati eCos (.sourceware.org) è un RTOS open-source

Possiede tutti i meccanismi di comunicazione e Progettato per sistemi embedded sincronizzazione previsti dallo standard POSIX È distribuito con una licenza GPL compatibile Schema della lezione Schema della lezione Lo scambio di messaggi avviene internamente in modalità Caratteristiche comuni È fortemente modulare ed altamente configurabile Caratteristiche comuni sincrona (si evitano le code di messaggi) VxWorks VxWorks

LynxOS Offre sia API proprietarie che funzioni compatibili con LynxOS

L’architettura basata su microkernel consente di fornire QNX POSIX e µITRON QNX

una protezione completa della memoria, sia agli applicativi eCos eCos Il kernel è solo uno dei package del sistema, e non è “user space” sia ai driver ed alle estensioni modulari del Windows Windows indispensabile per lo sviluppo di applicazioni in eCos kernel Linux come RTOS Linux come RTOS Il kernel offre il supporto alla gestione delle interruzioni, Supporta architetture SMP e AMP alla schedulazione ed alla sincronizzazione fra thread È possibile vincolare l’esecuzione di specifici thread su È scritto in ++ ed utilizza il compilatore GNU gcc particolari processori (nella terminologia di QNX, BMP o Bound ) I dettagli legati all’architettura sono incapsulati in un programma di interfaccia (HAL – Layer) che supporta numerose architetture ed è scritto in C ed assembler

SERT’13 R13.17 SERT’13 R13.18

Sistemi operativi Sistemi operativi Gestione delle interruzioni in eCos real-time Lo scheduler di eCos real-time Marco Cesati Marco Cesati

I task sono interrompibili La gestione delle interruzioni è implementata mediante Lo scheduler è a priorità fissa l’interazione fra kernel e HAL Schema della lezione Schema della lezione Caratteristiche comuni Nella variante bitmap lo scheduler ammette al massimo 32 Caratteristiche comuni Le API utilizzate dai driver delle periferiche per la gestione VxWorks thread, quindi esistono solo 32 livelli di priorità! VxWorks delle interruzioni utilizzano (in maniera trasparente per lo LynxOS LynxOS sviluppatore) l’interfaccia del kernel o quella di HAL QNX Non vi sono limiti sul numero di thread nella variante QNX eCos multi-level queue (MLQ) dello scheduler, ed il numero di eCos La gestione è “separata” Windows livelli di priorità è configurabile Windows Linux come RTOS Linux come RTOS La prima fase è realizzata da HAL e dal kernel (priorità Task di pari livello sono gestibili con Round Robin elevata, non interrompibile, non in contesto thread) I task possono disabilitare l’interrompibilità La gestione secondaria è interrompibile ed è realizzata in thread a priorità più elevata dei normali thread Nella variante MLQ supporta architetture SMP

Non è possibile legare un task ad un processore

SERT’13 R13.19 SERT’13 R13.20 Sistemi operativi Sistemi operativi Altri dettagli su eCos real-time Windows Embedded real-time Marco Cesati Microsoft offre una serie di RTOS embedded con footprint Marco Cesati ridotto, ad esempio:

La configurazione è uno dei punti di forza: consente la Windows Embedded CE 6.0 e Windows Embedded selezione dei soli programmi necessari (footprint Compact 7: le versioni più recenti e con maggiori estremamente ridotto) Schema della lezione funzionalità Schema della lezione Caratteristiche comuni Caratteristiche comuni Windows Mobile: orientata alle applicazioni su telefoni Il meccanismo di configurazione è realizzato mediante VxWorks VxWorks cellulari, offre un sottoinsieme delle caratteristiche compilazione condizionale e direttive al preprocessore LynxOS LynxOS QNX dell’Embedded CE 5.0 QNX I meccanismi di gestione della memoria sono delegati allo eCos Windows Phone 7: evoluzione di Windows Mobile, eCos strato HAL Windows commercializzato nel 2011 Windows Linux come RTOS Linux come RTOS Se è presente un dispositivo MMU, supporta memoria Riguardo a Windows Embedded CE: virtuale e protezione dello spazio di indirizzi Non è una versione “leggera” di Windows! I meccanismi di sincronizzazione e comunicazione sono Ha un kernel monolitico compatibili con POSIX ed implementati nel kernel Non è compatibile con lo standard POSIX Il codice del kernel è distribuito con licenza “shared-source” (simile alla licenza BSD) Supporta solo architetture monoprocessore SERT’13 R13.21 SERT’13 R13.22

Sistemi operativi Sistemi operativi Gestione delle interruzioni su Windows Embedded real-time Altri dettagli su Windows Embedded real-time Marco Cesati Marco Cesati I task sono interrompibili Lo scheduler è a priorità fissa con 256 livelli di priorità La gestione delle interruzioni è “separata” Task di pari priorità sono gestibili con FIFO o Round Robin La gestione immediata è effettuata dal kernel in contesto Schema della lezione Schema della lezione non interrompibile Caratteristiche comuni La priorità di un task è prefissata nel momento della Caratteristiche comuni VxWorks creazione, e deve essere modificata successivamente VxWorks La gestione secondaria è delegata ad un Interrupt Service LynxOS LynxOS Thread (IST) opportuno QNX Supporta il protocollo priority inheritance QNX eCos eCos Poiché l’IST non è rientrante, durante la sua esecuzione Windows Sono supportati i principali meccanismi di comunicazione Windows tutte le interruzioni sono abilitate tranne quella gestita Linux come RTOS e sincronizzazione fra task: semafori e mutex, code di Linux come RTOS dall’IST stesso messaggi, eventi

Supporta l’abilitazione e disabilitazione delle interruzioni È supportato il meccanismo di memoria virtuale (non disabilitabile) Le interruzioni possono essere annidate È opzionale il meccanismo di paginazione su richiesta (demand paging) Sono disponibili un gran numero di driver già sviluppati

SERT’13 R13.23 SERT’13 R13.24 Sistemi operativi Sistemi operativi Linux come RTOS real-time Linux come RTOS (2) real-time Marco Cesati Marco Cesati È possibile considerare Linux come un sistema operativo Possibilità di creare facilmente task in kernel mode, con real-time? Dipende. . . cambi di contesto rapidi e gestione della memoria con un unico spazio di indirizzamento Linux non è un sistema hard real-time: è progettato per Schema della lezione Supporto alla memoria virtuale e protezione della Schema della lezione massimizzare il throughput delle applicazioni e minimizzare i Caratteristiche comuni memoria per i task user mode (cambio di contesto lento) Caratteristiche comuni tempi medi di risposta VxWorks VxWorks LynxOS Possibilità di configurazione a grana estremamente fine LynxOS Comunque Linux ha numerose caratteristiche che lo rendono QNX QNX conveniente per un utilizzo in ambienti real-time: eCos Kernel monolitico, ma codice completamente disponibile, eCos Windows modificabile e modulare per ottenere occupazione della Windows Linux come RTOS Linux come RTOS Buona gestione di tempo e timer (high resolution timer) memoria (footprint) estremamente ridotta

Gestione “separata” delle interruzioni È il sistema operativo con il maggior numero di architetture supportate Schedulazione e gestione delle priorità dei task È il sistema operativo con il maggior numero di driver di Supporto alle politiche di accesso alle risorse condivise periferiche disponibili

Interrompibilità dei task anche in kernel mode Comunità di sviluppo, supporto e testing molto attive

SERT’13 R13.25 SERT’13 R13.26

Sistemi operativi Sistemi operativi Limiti di Linux come hard RTOS real-time Linux come embedded RTOS real-time Marco Cesati Marco Cesati Il limite principale di Linux per il suo uso in ambito hard Il kernel Linux è monolitico, ha senso considerarlo per i sistemi real-time è nella predicibilità temporale di kernel e applicazioni: embedded? Sì, dato che è possibile configurare il kernel in modo da ridurre Il kernel non è completamente interrompibile drasticamente la sua dimensione Schema della lezione Schema della lezione Le interruzioni sono disabilitate nelle sezioni critiche della Caratteristiche comuni Caratteristiche comuni gestione secondaria (ISR) di numerose interruzioni VxWorks VxWorks LynxOS LynxOS Le ISR possono avere una durata non predicibile QNX QNX eCos eCos La gestione delle interruzioni non fa uso di meccanismi di Windows Windows priorità Linux come RTOS Linux come RTOS

La latenza di schedulazione dei task è elevata, soprattutto a causa del costo dei cambi di contesto

Si può rimediare a tutti questi limiti?

Non è semplice, ma effettivamente è possibile modificare il kernel Linux in modo da renderlo sostanzialmente predicibile Fonte: linuxfordevices.com SERT’13 R13.27 SERT’13 R13.28