Modules | Area | Type | Hours | Teacher(s) | |
INFORMATICA E SISTEMI IN TEMPO REALE | ING-INF/05 | LEZIONI | 60 |
|
Il corso consente agli studenti di sviluppare software con vincoli temporali per diversi domini applicativi, quali robotica, avionica, sistemi automotive, multimediali e biomedici. Gli studenti impareranno i fondamenti teorici e le metodologie più moderne per sviluppare ed analizzare applicazioni sensibili al tempo con elevato grado di concorrenza e requisiti di prestazione. Esempi pratici saranno illustrati per spiegare come derivare i vincoli temporali dai requisiti dell'applicazione. Quindi, il corso si concentrerà sulle metodologie atte ad aumentare la prevedibilità dei sistemi controllati da computer, inclusi gli algoritmi per la schedulazione dei task e la gestione di risorse. Infine, verranno illustrati numerosi esempi di applicazioni real-time realizzati sul sistema Linux, sfruttando la libreria Pthread ed una libreria ad-hoc per la gestione dei vincoli temporali.
The course enables the students to develop real-time software in several application domains, as robotics, avionics, automotive, multimedia, and biomedical systems. Students will learn the theoretical foundations and the state-of-the-art methodologies for analyzing and developing time-sensitive applications with high degree of concurrency and a set of performance requirements. Practical examples are illustrated to explain how to derive timing constraints from the application requirements. Then, the course focuses on special methodologies for increasing the predictability of computer controlled systems, including task scheduling, resource management algorithms, communication mechanisms, and overload handling policies.
Le conoscenze acquisite durante il corso verranno verificate attraverso l'assegnazione di un progetto e durante l'esame, mediante un insieme di domande sul programma del corso.
The knowledge acquired during the course will be verified through a project assignment and during the exam.
Gli studenti acquisiranno competenze nell'analizzare, sviluppare e testare software in tempo reale, utilizzando strumenti e librerie specifiche per la gestione di applicazioni multitask con vincoli temporali.
Students will acquire skills in analyzing, developing, and testing real-time software, using specific tools and libraries for managing multi-task applications under timing constraints.
Le capacità acquisite verranno verificate attraverso lo sviluppo di un progetto e una relazione scritta che spiega le scelte progettuali e le soluzioni di implementazione adottate.
The acquired capacities will be verified through the development of a small project (one for each module) and a written report explaining the design choices and implementation solutions.
Gli studenti avranno l'opportunità di sviluppare il progetto in un piccolo gruppo, condividendo la responsabilità nella gestione dello sviluppo delle applicazioni.
Students will be given the opportunity to develop the project in a small team, sharing the responsibility in managing the application development.
Discussione orale del progetto, durante la quale gli studenti sono tenuti a spiegare il loro contributo specifico nello sviluppo del lavoro e le soluzioni adottate.
During the discussion of the project, students are required to explain their specific contribution in the development of the work.
Conoscenze di base su matematica, fisica, architetture di elaborazione, linguaggi di programmazione e sistemi operativi.
Basic knowledge on mathematics, physics, computer architectures, programming languages, and operating systems. Attending the Real-Time Systems module is highly recommended to better understand some of the contents of the Concurrent Distributed Systems module.
Le lezioni saranno supportate da diapositive e materiali multimediali, ove necessario.
Presentazioni e altro materiale didattico saranno forniti attraverso il sito web del corso.
Gli studenti possono interagire con lil docente tramite e-mail e direttamente, previo appuntamento.
Lectures will be supported by slides and multimedia materials, whenever needed.
Slides and other teaching material will be provided through the course web site.
Students can interact with the teacher by Email and directly, by appointment.
1. Concetti di base sul calcolo in tempo reale. Domini di applicazione. Tipici Requisiti di sistema. Limiti degli approcci tradizionali. Modelli di attività computazionali. Tipologie di vincoli temporali. Algoritmi di scheduling. Metriche per la valutazione delle prestazioni.
2. Algoritmi di scheduling in tempo reale. Tassonomia degli algoritmi esistemti. Schedulazione con vincoli di precedenza. Scheduling di attività periodiche. Analisi di schedulabilità. Analisi dei tempi di risposta.
3. Protocolli per l'accesso alle risorse condivise. Fenomeno di inversione di priorità e metodi per evitarlo: Non-Preemptive Protocol, Highest Locker Priority, Priority Inheritance Protocol, Priority Ceiling Protocol, Stack Resource Policy. Stima dei tempi di bloccaggio. Analisi dei tempi di risposta in presenza di protocolli di accesso a risorse condivise.
4. Gestione delle attività aperiodiche. Server a priorità fissa (Polling Server, Deferrable Server e Sporadic Server). Server di priorità dinamica (Total Bandwidth Server e Constant Bandwidth Server). Analisi temporale in presenza di server aperiodici.
5. Gestione dei sovraccarichi. Definizione di carico computazionale. Metodi per la gestione dei sovraccarichi. Tecniche di Admission Control, Robust Scheduling, Imprecise Compuation, Job Skipping, Elastic Task. Gestione degli overrun e tecniche di Resource Reservation per l'isolamento temporale tra applicazioni.
6. Linee guida per lo sviluppo di software in tempo reale. Esempi di programmazione di software in tempo reale in Linux.
7. Metodi di integrazione per la simulazione di sistemi fisici, metodi di programmazione per l'evoluzione temporale di sistemi discretizzati, metodi per la simulazione di varie tipologie di sensori (telecamere, sensori di prossimità, lidar, IMU, ecc.) e attuatori (motori in corrente continua e sistemi elastici).
1. Giorgio Buttazzo, Hard Real-Time Computing Systems: Predictable Scheduling Algorithms and Applications", Third Edition, Springer, 2011.
2. Giorgio Buttazzo: "Sistemi in Tempo Reale", Terza Edizione, Pitagora Editrice, Bologna, 2006.
Materiale aggiuntivo sarà fornito sul sito web del corso.
Giorgio Buttazzo, Hard Real-Time Computing Systems: Predictable Scheduling Algorithms and Applications", Third Edition, Springer, 2011.
Giorgio Buttazzo: "Sistemi in Tempo Reale", Terza Edizione, Pitagora Editrice, Bologna, 2006.
Additional material will be provided on the course web site.
La frequentazione del corso è altamente consigliata per meglio comprendere gli aspetti teorici e affrontare correttamente lo sviluppo del progetto.
Same program and same exam modality. It is highly recommended to attend all the lectures to better understand both the theoretical part and properly address the project development.
L'esame prevede lo sviluppo di un progetto, la sua discussione e una prova scritta sugli argomenti del corso. Al fine di comprendere la parte teorica e affrontare correttamente lo sviluppo del progetto, si raccomanda vivamente la partecipazione in presenza a tutte le lezioni del corso.
The exam consists of a project development and a written test. It is highly recommended to attend all the lectures to better understand both the theoretical part and properly address the project development.
Per chi fosse interessato ad approfondire gli aspetti informatici dei sistemi embedded e le metodologie di progettazione e sviluppo dei sistemi real-time, è possibile organizzare stage e tirocini presso il RETIS Lab (Real-Time Systems Laboratory) dell'Istituto TeCIP della Scuola Superiore Sant'Anna.