FACOLTÁ DI INGEGNERIA CORSO DI LAUREA INGEGNERIA INFORMATICA Progetto e Sviluppo di un Algoritmo di Scheduling per il Sistema RTAI Candidato: Luca Marzario Sommario Motivazioni Obiettivi Architettura del sistema RTAI Implementazione Test Conclusioni Motivazioni Applicazioni interattive e multimediali Quality of service Sistemi operativi general-purpouse (Windows, Linux, ...) non offrono garanzie temporali Sistemi operativi real-time troppo costosi non offrono supporto adeguato alle applicazioni multimediali e interattive Caratteristiche di Linux Linux non è un sistema operativo real-time Possiede molte caratteristiche che ne fanno un ottimo sistema operativo: robusto e affidabile ampio supporto di processori e periferiche networking avanzato strumenti di sviluppo e dubugging interfaccia grafica ampia disponibilità di software Linux e Real-Time Linux non possiede le caratteristiche tipiche dei sistemi real-time: determinismo (prevedibilità) possibilità di preemtion specifica vincoli temporali programmazione “fine” del timer RTAI Real-Time Application Interface (RTAI) Affianca a Linux un kernel real-time Schedula Linux come idle task Vantaggi Buone prestazioni real-time per i task RTAI Sistema di sviluppo basato su Linux Problemi Starvation di Linux in caso di alti carichi real-time Crash del sistema in caso di errori di programmazione o malfunzionamenti Soluzioni Implementare un algoritmo di reservation su RTAI Riservare banda di utilizzo del processore a ogni task Tempo minimo di esecuzione garantito Protezione del sistema da errori di programmazione o malfunzionamenti Schedulare Linux con il CBS Shell di comandi sempre attiva Minor tempo di risposta delle applicazioni Linux Real Time Application Interface (RTAI) Sistema real-time che permette l’esecuzione di applicazioni tipo hard real-time Fa parte dei progetti Linux Real-Time Questo tipo di sistemi si definisce “real time executive” Solo il kernel real-time ha il pieno controllo dell’hardware Principali sistemi: RTAI e RTLinux Linux Task 1 Task n real time executive hardware RTAI vs RTLinux Prestazioni offerte paragonabili. Interfacce di programmazione (API) molto simili RTAI è meno intrusivo rispetto a RTLinux: Maggiore mantenutibilità Più facile aggiornamento delle modifiche kernel Linux RTLinux open-source non è più mantenuto RTAI costantemente aggiornato Ultima versione di RTAI rilasciata il 23 settembre 2002 RTAI Costituito di moduli da inserire nel kernel Linux precedentemente modificato Moduli principali Gestore interruzioni (interrupt dispatcher) Scheduler Moduli aggiuntivi FIFO shared memory POSIX etc. Task Real-Time Gest. Interr Scheduler FIFO Shared Mem POSIX RT task kernel Linux modificato Linux Task Applicazione RTAI Costituita di due componenti Real-time (acquisizione, elaborazione, controllo etc.) eseguita da task RTAI (real-time) Non real-time (visualizzazione, tracing etc.) eseguita da processi Linux non disturba le attività real-time Linux P1 Pk Task Task Task P2 RT1 RT2 RTn RTAI Meccanismi di comunicazione fifo scambio di messaggi segnali memoria condivisa ... RTHAL Modifiche kernel Linux Linux perde il controllo diretto dell’hardware Attivazione RTAI Linux Task 1 Task n modifica dei puntatori dell’rthal RTHAL Disattivazione hardware ripristino dei puntatori alle funzioni originali di Linux Linux disable interrupt RTHAL disable interrupt Hard disable Soft disable RTAI interrupt dispatcher Salva registri rtai handler? Linux handler? RTAI dispatcher Ripristina registri rtai handler Linux in esec? Linux handler interruzione pendente Scheduler Architetture supportate monoprocessore multiprocessore Politiche di scheduling Prioritario Semplice Rate Monotonic Earliest Deadline First Gestione del Timer modalità periodica modalità one-shot Resource reservation Ogni task ha riservato un tempo Q ogni periodo T Processi hard real-time e soft real-time possono convivere E’ possibile riservare una frazione del tempo macchina a Linux Il Constant Bandwidth Server Resource reservation tramite CBS (Constant Bandwidth Server) Basato sul TBS e DSS Rispetto al TBS non richiede WCET Rispetto al DSS migliori prestazioni Algoritmo CBS Ad ogni task viene associato un server schedulato con EDF capacità massima periodo Ad ogni istanza servita dal server viene associata una deadline dinamica Durante l’esecuzione la capacità viene decrementata. Una volta esaurita, viene ricaricata al suo valore massimo e la deadline viene posposta (diminuzione priorità) Applicazione di prova RT1 RT2 RT3 FIFO Linux P1 Frequenze jitter senza CBS 90 80 70 60 50 40 30 20 10 0 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 jitter (ms) Frequenze jitter con CBS 100 90 80 70 60 50 40 30 20 10 0 -6 -5 -4 -3 -2 -1 0 jitter (ms) 1 2 3 4 5 6 Conclusioni Risultati ottenuti Diminuzione dei tempi di risposta delle applicazioni Linux Garanzia di schedulazione di Linux anche in caso di grossi carichi real-time Maggior controllo Maggiore robustezza