RTAI: un po di storia



Documenti analoghi
Schedulazione in RTAI

RTAI e scheduling. Andrea Sambi

Estensioni Linux per il Real-Time

Lezione 4 La Struttura dei Sistemi Operativi. Introduzione

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2

Lezione R14. Sistemi embedded e real-time

Approccio stratificato

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Gianluigi Magnasco easitec S.r.l. Parma, 16 Settembre 2010

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi?

Un sistema operativo è un insieme di programmi che consentono ad un utente di

Pronto Esecuzione Attesa Terminazione

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Organizzazione Monolitica

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

Sistemi Operativi. Scheduling della CPU SCHEDULING DELLA CPU. Concetti di Base Criteri di Scheduling Algoritmi di Scheduling

Sistemi Operativi SCHEDULING DELLA CPU. Sistemi Operativi. D. Talia - UNICAL 5.1

Scheduling. Sistemi Operativi e Distribuiti A.A Bellettini - Maggiorini. Concetti di base

Tesina per l esame di Sistemi Operativi a cura di Giuseppe Montano. Prof. Aldo Franco Dragoni

La Gestione delle risorse Renato Agati

Il Sistema Operativo (1)

Algoritmi di scheduling

Sistemi Operativi SCHEDULING DELLA CPU

Sistemi Operativi Kernel

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Introduzione ai Sistemi Operativi

Linux nei sistemi Real-Time. Andrea Sambi

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Porting su architettura ARM Marvell 88F6281 ed analisi comparativa delle patch real-time RTAI e Xenomai per il kernel Linux

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

Il Sistema Operativo

Modello dei processi. Riedizione delle slide della Prof. Di Stefano

STRUTTURE DEI SISTEMI DI CALCOLO

Sistemi Operativi. Processi GESTIONE DEI PROCESSI. Concetto di Processo. Scheduling di Processi. Operazioni su Processi. Processi Cooperanti

Evoluzione dei sistemi operativi (5) Evoluzione dei sistemi operativi (4) Classificazione dei sistemi operativi

Scheduling. Lo scheduler è la parte del SO che si occupa di

Architettura di un sistema operativo

Architettura di un sistema di calcolo

Introduzione al sistema operativo. Laboratorio Software C. Brandolese

FONDAMENTI di INFORMATICA L. Mezzalira

Scheduling della CPU Simulazione in linguaggio Java

J. Assfalg Appunti di Sistemi Operativi

Scheduling. Scheduling 14/12/2003 1/7

IL SISTEMA OPERATIVO

Sistema di protezione (1)

Sistema di protezione (2) Protezione (1)

Sistema operativo: Gestione della memoria

Implementazione di sistemi real time

GESTIONE DEI PROCESSI

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche

Infrastruttura di produzione INFN-GRID


Il software di base comprende l insieme dei programmi predisposti per un uso efficace ed efficiente del computer.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Linux nel calcolo distribuito

Algoritmi di scheduling

Pag. 1. Introduzione allo scheduling. Concetti fondamentali. Scheduling della CPU. Concetti fondamentali. Concetti fondamentali. Algoritmi.

Processi e Thread. Scheduling (Schedulazione)

Corso di Sistemi di Elaborazione delle informazioni

Scheduling della CPU:

Principi di Schedulazione in tempo reale

Il web server Apache Lezione n. 3. Introduzione

MANUALE DI UTILIZZO: INTRANET PROVINCIA DI POTENZA

Lo Scheduling Real Time in Linux. Universita degli studi di Roma La Sapienza Ivan Gualandri Matricola Relatore: Giorgio Richelli

Gestione Risorse Umane Web

Introduzione alle applicazioni di rete

Lo scheduling. Tipici schedulatori

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Il Sistema Operativo. Di cosa parleremo? Come si esegue un programma. La nozione di processo. Il sistema operativo

Scheduling della CPU

Il Concetto di Processo

1 Processo, risorsa, richiesta, assegnazione 2 Concorrenza 3 Grafo di Holt 4 Thread 5 Sincronizzazione tra processi

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

Infrastrutture Software

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX

Dispensa di Informatica I.1

Introduzione alle architetture per il controllo dei manipolatori

Introduzione ai sistemi operativi

Il sistema operativo TinyOS

e-dva - eni-depth Velocity Analysis

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Sistemi operativi e reti A.A Lezione 2

Corso di Informatica

Guida dell utente di RTAI LiveCD

Java Virtual Machine

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Applied Research & Technology Dept.

Il Software. Il software del PC. Il BIOS

PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE

Sistemi Operativi. 5 LEZIONE SCHEDULING DELLA CPU CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08

Capitolo 5: I thread

Drivers. Introduzione Tipologie Struttura Interazione con il kernel

Virtualizzazione e Macchine Virtuali

Transcript:

RTAI Andrea Sambi

RTAI: un po di storia Real-Time Application Interface Sviluppato presso il Politecnico di Milano Nato per rispondere alla richiesta di un sistema operativo a basso costo da utilizzarsi per diverse applicazioni di tipo hard real-time 1996/1997: abbandono di DOS come SO realtime, studio di fattibilità per estendere il kernel Linux ed utilizzarlo in ambito real-time 1999: prima release sotto il nome RTAI, funzionante con Linux kernel versione 2.2

User Space RTAI: panoramica Real-Time Application Interface: in quale direzione ha evoluto il kernel Linux? Prevede l introduzione di un nuovo layer tra hardware e kernel Linux. Processi Real-Time Real-Time Kernel System Calls Processi Standard Linux Kernel Ha richiesto modifiche limitate al kernel standard. Le prime versioni di RTAI comportavano la modifica/riscrittura di circa 70 righe di codice. Hardware

RTAI: architettura Si introduce un nuovo layer tra il kernel Linux e il sistema hardware: RTHAL (Real-Time Hardware Abstraction Layer). Racchiude tutti i dati e le funzioni temporalmente critiche del kernel in un unica struttura: permette di catturare facilmente le funzionalità del kernel (interrupts, system calls, timers) per poterle gestire in accordo a politiche real-time Sostituisce le operazioni sulle strutture originali con operazioni su puntatori RTHAL I puntatori RTHAL sono modificabili dinamicamente. Se RTAI non è attivo puntano alle strutture originali di Linux, se RTAI è attivo puntano alle strutture del kernel real-time Linux non ha più il controllo sull abilitazione / disabilitazione delle interruzioni.

RTAI: architettura RTHAL non fornisce servizi real-time: ha la sola funzione di intercettare le chiamate al kernel Linux. Le chiamate sono redirette alle strutture puntate da RTHAL. RTAI non attivo Funzionamento normale di Linux. RTAI attivo Solo funzionalità real-time possono accedere direttamente all hardware. Linux è gestito come un processo a bassa priorità. Quindi RTAI può essere attivato o disattivato a piacere? SÌ perché RTAI è disponibile come modulo kernel di Linux. Permette di estendere dinamicamente le funzionalità del kernel senza dover essere caricato al boot di sistema.

RTAI: architettura L idea di avere uno strato software che intercetta le chiamate al SO è stata ulteriormente sviluppata nel tempo. Si è cercato di rendere possibile la strutturazione gerarchica di sistemi operativi componendoli in strati diversi. ADEOS (Adaptive Domain Environment for Operating Systems) Scopo: realizzare un ambiente flessibile per condividere risorse hardware tra più sistemi operativi o più istanze di uno stesso SO La realizzazione consiste in un microkernel che gestisce la comunicazione con i diversi domini (es. SO) installati La gestione delle interruzioni è implementata con uno schema a pipeline in cui ogni stadio rappresenta un dominio Ogni interruzione è propagata alla pipeline, ogni stadio può: Accettare l interrupt, gestirlo, scegliere se propagarlo o terminarlo Ignorare l interrupt, non accettarlo immediatamente ma gestirlo al momento opportuno, scegliere se propagarlo o terminarlo Scartare l interrupt e propagarlo Terminare l interrupt senza propagarlo ulteriormente

RTAI: architettura Il meccanismo di ADEOS racchiude tutto ciò che RTAI inizialmente otteneva con RTHAL RTAI viene installato come dominio alla massima priorità per ADEOS, Linux è caricato in uno stadio meno prioritario RTAI gestisce gli interrupt prima del kernel Linux ed opera in accordo alle esigenze dei processi real-time

RTAI: architettura User Space Processi Standard Processi Real-Time Linux Kernel I/O Scheduler Real-Time Kernel Interrupts Hw RTHAL / ADEOS Hardware Interrupts Interrupts Sw I/O

RTAI: scheduling RTAI permette una gestione full-preemptable dei processi, in funzione delle loro priorità. Configurazione dello scheduler Funzione del numero di processori presenti Scelta della modalità di funzionamento dello scheduler Scelta della politica di scheduling Ogni possibile configurazione dello scheduler è adatta ad una specifica combinazione di hardware e requisiti delle applicazioni.

RTAI: scheduling La scelta dello scheduler in funzione dell hardware in uso impatta su quale modulo kernel viene caricato con RTAI. Uniprocessor Scheduler (UP) Utilizzabile nei sistemi monoprocessore Symmetric Multiprocessor Scheduler (SMP) In un sistema multiprocessore permette una distribuzione di carico simmetrica. Ogni processo di default può essere assegnato a qualsiasi processore; per ottimizzare l esecuzione è possibile imporre l esecuzione di un processo su una CPU o su un insieme ristretto di CPU Multi Uniprocessor Scheduler (MUP) In un sistema multiprocessore impone ad ogni processo l esecuzione su una CPU stabilita al momento della sua creazione. Meno flessibile ma più efficiente di SMP

RTAI: scheduling Occorre scegliere la temporizzazione con cui lo scheduler viene eseguito. Periodic mode Esegue lo scheduler periodicamente al termine di un periodo prefissato: il timer viene settato una sola volta all inizio dell esecuzione Il periodo dei processi deve essere multiplo esatto del periodo dello scheduler, in caso contrario il periodo dei processi è approssimato al multiplo del periodo dello scheduler più vicino (introduce un jitter di attivazione) One-shot mode Lo scheduler viene eseguito in maniera non periodica. Il timer deve essere settato ogni volta in base al processo più prioritario che andrà in esecuzione Permette una gestione più flessibile delle temporizzazioni di tutti i processi a costo di un maggiore overhead dovuto alla necessità di riprogrammare il timer al termine di ogni periodo

RTAI: scheduling Politiche di scheduling FIFO Il processo attivo a priorità più alta ottiene il controllo della CPU fino a quando la rilascia volontariamente oppure diventa attivo un processo a priorità maggiore Round-Robin (RR) Il processo attivo a priorità più alta ottiene il controllo della CPU per un determinato intervallo di tempo, al termine del quale il controllo passa ad un altro processo allo stesso livello di priorità (se presente). Un processo può subire preemption da parte di un processo a priorità maggiore RTAI integra primitive che associate alla politica FIFO permettono una semplice implementazione degli algoritmi di scheduling Rate Monotonic Priority Order ed Earliest Deadline First.

RTAI: Inter-Process Communication (IPC) Real-time fifos Meccanismo di base per scambiare dati in modo asincrono tra processi real-time e processi Linux non real-time Shared Memory Condivide aree di memoria tra processi RT e processi Linux Messages Possibilità di inviare messaggi sia in maniera asincrona che sincrona (RPC) tra processi RT Mailboxes Permettono di inviare/ricevere messaggi di qualsiasi dimensione, ordinati per priorità o per istante di arrivo, tra processi RT e processi Linux Semaphores Permettono di sincronizzare i processi nell accesso a risorse condivise evitando inversioni di priorità incontrollate

RTAI: ulteriori funzionalità Scarso supporto alle estensioni real-time dello standard POSIX Parzialmente supportati gli standard 1003.c (pthread, mutex) e 1003.b (pqueue) LXRT I processi RTAI nativi eseguono in kernel mode: le API originarie di RTAI sono utilizzabili solo da moduli kernel LXRT permette di sviluppare processi real-time usando le API RTAI da spazio utente (si è cercato di mantenere simmetria tra le API in spazio kernel e quelle in spazio utente) Permette un passaggio più graduale dai processi Linux ai processi real-time Permette una maggiore protezione dell hardware (in spazio kernel si può accedere liberamente alla memoria) Utile in fase di test e prototipazione, meno efficiente rispetto alla programmazione in spazio kernel

Esempio: un modulo kernel RTAI Parte dichiarativa Parte Real-Time Setup del modulo #include <rtai.h> #include <rtai_sched.h>... RT_TASK task;... void task_routine() { while(1) { /* Codice real-time */ rt_task_wait_period(); } }... int init_module(void) {... rt_task_init(&task, task_routine, 0, stack_size, priority, 0, 0); timer_period = start_rt_timer(nano2count(1e9)); task_period = 2*timer_period; rt_task_make_periodic(&task, now, task_period); } void cleanup_module(void) { rt_task_delete(&task); stop_rt_timer(); }

Esempio: un processo RTAI LXRT Parte dichiarativa Inizializzazione del processo Parte Real-Time Terminazione del processo #include <rtai_lxrt.h>... int main(void) { RT_TASK *task;... sched_setscheduler(0, SCHED_FIFO, &priorita); mlockall(mcl_current MCL_FUTURE); task = rt_task_init(nam2num("name"), priority, stack_size, 0); timer_period = start_rt_timer(nano2count(1e9)); task_period = 2*timer_period;... rt_make_hard_real_time(); rt_task_make_periodic(task, now, task_period); while(1) { /* Codice real-time */ rt_task_wait_period(); } rt_make_soft_real_time(); rt_task_delete(task); return 0; }

RTAI: installazione Passi principali per l installazione di RTAI Installare Linux Installare una distribuzione di Linux (Fedora, Mandrake, Slackware, Gentoo, ) Scaricare i file sorgenti del kernel e una versione di RTAI compatibile con essi È preferibile scaricare i sorgenti vanilla del kernel (www.kernel.org) Scaricare una versione di RTAI (www.rtai.org) che contenga la patch adatta al kernel scaricato Esempio: la patch di nome hal-linux-2.6.14-i386-1.1-02.patch che si trova nella cartella /rtai-3.3/base/arch/i386/patches/ permette di installare RTAI 3.3 su un kernel versione 2.6.14 Patch del kernel Dalla cartella dei sorgenti del kernel: patch p1 <../rtai-3.3/base/arch/i386/patches/hal-linux- 2.6.14-i386-1.1-02.patch

RTAI: installazione Configurare il kernel Utilizzare il file.config della distribuzione in uso come base per configurare il kernel: cp /boot/config-versione_in_uso.config make menuconfig Code maturity level Prompt for development and/or incomplete drivers YES Loadable module support Enable loadable module support YES Module versioning support NO Processor type and features Preemptible kernel NO Processor type and features Use register arguments NO Processor type and features Interrupt pipeline (IPIPE) YES File systems Pseudo filesystems /proc file system support YES

RTAI: installazione Compilare ed installare il kernel make make modules_install mkinitrd /boot/initrd-versione_kernel.img vesione_kernel cp arch/i386/boot/bzimage /boot/vmlinuz-versione_kernel cp System.map /boot/system.map-versione_kernel ln s /boot/system.map-versione_kernel /boot/system.map Editare il file di configurazione del boot-loader (es. /boot/grub/menu.lst) aggiungendo una entry per caricare il nuovo kernel Riavviare caricando il nuovo kernel

RTAI: installazione Configurazione ed installazione di RTAI Dalla cartella di RTAI: make menuconfig Selezionare la cartella dei sorgenti del kernel preparato con la opportuna patch make make install Riavviare Test cd cartella_di_installazione_rtai/testsuite/user/latency./run

Documentazione DIAPM RTAI for Linux, P. Mantegazza Linux e real-time, D. Ciminaghi Linux Real Time Application Interface (RTAI) in low cost high performance motion control, L. Dozio P. Mantegazza Real-Time and Embedded Guide, H. Bruyninckx RTAI: Real-Time Application Interface, P.S. Hughes - D. Beal www.rtai.org, www.aero.polimi.it/~rtai, www.fdn.fr/~brouchou/rtai/rtai-doc-prj, www.rtai.dk, www.rts.uni-hannover.de/rtai/lxr/source, www.realtimelinuxfoundation.org