Sistemi operativi real time basati su Linux: gestione delle risorse e dei processi. Tesina per l’esame di Sistemi Operativi a cura di Giuseppe Montano. Prof. Aldo Franco Dragoni Corso di laurea in Ingegneria Informatica e dell’Automazione. Settembre 2004 Sistemi operativi real time basati su Linux: gestione delle risorse e dei processi Giuseppe Montano 1.1 Linux e il Real Time Settembre 2004 Sistemi operativi real time basati su Linux: gestione delle risorse e dei processi Giuseppe Montano 1.2 Definizioni iniziali ¾ Processo - istanza di un programma in esecuzione. ¾ Latenza - riferita a un processo, e’ la differenza di tempo tra l’istante in cui tale processo sarebbe dovuto iniziare (o finire) e l’istante in cui cio’ si e’ effettivamente verificato. ¾ Vincolo temporale - uno dei seguenti: • Deadline: istante entro il quale un task deve essere completato. • Zero execution time: semplificazione ideale secondo cui un task dovrebbe avere durata pari a zero. • QoS (Qualita’ del servizio): un task deve utilizzare una precisa quantita’ di risorse per unita’ di tempo. Settembre 2004 Sistemi operativi real time basati su Linux: gestione delle risorse e dei processi Giuseppe Montano 1.3 Cos e’ un sistema operativo Real Time? Due possibili definizioni: 9 Un sistema operativo real time e’ in grado di eseguire tutti i suoi compiti senza violare specifici vincoli di tempo. 9 I tempi in cui le operazioni vengono eseguite possono essere determinati a priori deterministicamente sulle basi della conoscenza del hardware e del software del sistema in questione. RTOS Hard Real Time I vincoli temporali stabiliti devono essere rispettati imprescindibilmente. Settembre 2004 Soft Real Time I vincoli temporali stabiliti vengono rispettati in maniera elastica. Sistemi operativi real time basati su Linux: gestione delle risorse e dei processi Giuseppe Montano 1.4 Modelli di esecuzione Nei sistemi operativi esistono due differenti modelli di esecuzione dei processi che sono un cardine fondamentale su cui si basano le funzionalita’ real time del sistema in questione: 1) modalita’ preemptive 2) modalita’ non-preemptive ¾ Preemptive: un task in kernel space puo’ essere interrotto (preempted) durante la sua esecuzione da un altro task ¾ Non-preemptive: dal momento in cui un task in kernel space viene avviato non ne puo’ essere eseguito nessun altro fino al momento in cui il primo termina o rilascia la CPU. Settembre 2004 Sistemi operativi real time basati su Linux: gestione delle risorse e dei processi Giuseppe Montano 1.5 Cos e’ Linux? ¾ E’ un Sistema Operativo (banale!) ¾ E’ la tesi di laurea di Linus Torvalds all’Universita’ di Helsinki ¾ Sviluppato a partire da Minix (un sistema UNIX molto ridotto) su un 80386 ¾ Nel 1991 viene rilasciata la prima versione di Linux (la 0.02) ¾ L’ultima versione (corrente) e’ la 2.6 ¾ E’ considerato un S.O. eccellente, economico e alternativo ad altri S.O. molto costosi (Windows2003, UNIX, MacOS…) ¾ Ha un kernel a struttura monolitica ¾ Non e’ adatto a scenari real time perche’ (tra le tante motivazioni): • ha un kernel non-preemptive • ha politiche di scheduling “eque”, con scarsa possibilita’ di variazione sulle priorita’ • ha un comportamento non deterministico Settembre 2004 Sistemi operativi real time basati su Linux: gestione delle risorse e dei processi Giuseppe Montano 1.6 Real Time Linux: approccio 1 ll kernel viene sostituito con una versione ex-novo dotata di funzionalita’ real time Settembre 2004 Sistemi operativi real time basati su Linux: gestione delle risorse e dei processi Giuseppe Montano 1.7 Real Time Linux: approccio 2 ll kernel ordinario viene affiancato da un resource kernel in grado di fornire funzionalita’ real time all’occorrenza. Il kernel Linux rappresenta ora un thread in esecuzione con bassa priorita’. Settembre 2004 Sistemi operativi real time basati su Linux: gestione delle risorse e dei processi Giuseppe Montano 1.8 Real Time Linux: approccio 3 Stesso approccio del caso 2 con la differenza che in kernel Linux non ha piu’ la possibilita’ di accedere al hardware di sistema. Le hard-routines del kernel ordinario diventano delle soft-routines. Settembre 2004 Sistemi operativi real time basati su Linux: gestione delle risorse e dei processi Giuseppe Montano 1.9 L’architettura di RTLinux Linux app Linux app Linux app Linux app Linux app User KernelLinux Linuxkernel RT thread Kernel RT thread Resource Kernel (RealTime) Settembre 2004 Sistemi operativi real time basati su Linux: gestione delle risorse e dei processi Giuseppe Montano 1.10 L’architettura di RTAI RTAI (Real Time Application Interface) e’ un progetto avviato dall’italiano Paolo Mantegazza che lo ha sviluppato a partire da RTLinux. RTAI si compone di 5 livelli complementari: ¾ HAL (Hardware Abstraction Layer): fornisce una interfaccia verso il hardware di sistema (crea una sorta di macchina virtuale real time su cui poggia il sistema). ¾ Linux Compatibility Layer: fornisce una interfaccia tra RTAI e Linux standard. ¾ Core RTOS: nucleo di RTAI che fornisce funzionalita’ real time al sistema. ¾ LX/RT (Linux / Real Time): insieme di moduli caricabili dal kernel che permettono ai processi in user space di sfruttare funzionalita’ real time del sistema. ¾ Pacchetti con funzionalita’ avanzate: forniscono degli extra al sistema come particolari forme di IPC, drivers real time, ecc... Settembre 2004 Sistemi operativi real time basati su Linux: gestione delle risorse e dei processi Giuseppe Montano 1.11