Nuova ricerca

Marko BERTOGNA

Professore Ordinario
Dipartimento di Scienze Fisiche, Informatiche e Matematiche sede ex-Matematica

Insegnamento: Sistemi Embedded e Real Time

Informatica (Offerta formativa 2022)

Obiettivi formativi

Lo scopo del corso di Sistemi Embedded di Tempo Reale è fornire competenze avanzate sulla progettazione, configurazione e implementazione di sistemi industriali che necessitano di una pronta interazione con l'ambiente circostante. I principali domini di applicazione di tali tecnolgie includono sistemi per automotive, automazione industriale, avionica, etc. Ovvero tutti quei sistemi dove non e' solo necessario che la risposta fornita dal sistema sia corretta, ma anche che essa avvenga entro ben determinate tempistiche.

Prerequisiti

Per seguire il corso, sono necessarie conoscenze di programmazione, struttura dei calcolatori elettronici e dei sistemi operativi. Si raccomanda la conoscenza di un ambiente di programmazione C/C++.

Programma del corso

Richiamo di Sistemi Operativi e Architetture: algoritmo, programma, processo, thread. Sistemi batch vs sistemi interattivi. CPU, registri, memoria, interfacce, stack, gestione polling/interrupt. Processo e azione atomica su sistema single-core e multi-core. [1 CFU]

Programmazione concorrente: comunicazione, sincronizzazione, scheduling. Programmazione a memoria comune: mutua esclusione, sezioni critiche, semafori, mutex, monitor, condition variable, deadlock, livelock. Programmazione a scambio di messaggi: memoria distributia, comunicazione sincrona e asincrona. [3 CFU]

Sistemi di Tempo Reale [3 CFU]
Definizioni, esempi, incidenti.
Pthread programming: creazione, join, scheduling, semafori, mutex, condition.
Schedulazione di sistemi di Tempo Reale: task, jobs, sistemi preemptive/non-preemptive, latenze, worst-case execution time, sistemi a criticalitá miste, task periodici/sporadici/aperiodici, anomalie di schedulazione. Algoritmi di schedulazione: FCFS, SJF, round robin, prioritá fisse/dinamiche, EDF (e relativa ottimalitá).
Analisi di schedulabilitá: rate monotonic, deadline monotonic, EDF e relativi test di garanzia. Utilizzazione, least upper bound, tempo di risposta, domanda computazionale. Istante critico e condizioni di caso peggiore.
Algoritmi per la gestione delle risorse condivise: problema dell'inversione di prioritá, NPP, HLP, PIP, PCP, SRP.
Server real-time: gestione di attivitá aperiodiche. Server a prioritá fissa: Polling server, Deferrable server. Server a prioritá dinamica: TBS, CBS. Scelta dei parametri di un server.

Applicazioni e RTOS [2 CFU]
ROS, Formula 1/10, applicazioni concorrenti e gestione dei task in tempo reale. Esercitazioni.

Orario di ricevimento: Giovedì ore 9-11

Metodi didattici

Lezioni frontali e esercitazioni in laboratorio.
Gli studenti non frequentanti possono accedere alle slide delle lezioni e al materiale delle esercitazioni.

Testi di riferimento

Giorgio C. Buttazzo, "Hard Real-Time Computing Systems - Predictable Scheduling Algorithms and Applications". Third Edition. 2011. Springer.

- Slide del docente

Verifica dell'apprendimento

Esame scritto comprendente domande di teoria ed esercizi.
Esame orale dove verra' discusso un progetto software sviluppato dallo studente.

Risultati attesi

- Conoscenza e capacità di comprensione: al termine del corso lo studente avrà conoscenze piu' avanzate dei sistemi di tempo reale utilizzati in ambito industriale.

- Capacità di applicare conoscenza e comprensione: al termine del corso lo studente sarà in grado di applicare queste conoscenze per la realizzazione e progettazione di sistemi embedded real-time.

- Autonomia di giudizio: al termine del corso lo studente sarà in grado di riconoscere in modo autonomo i diversi approcci e metodi risolutivi per la realizzazione di sistemi embedded che richiedono una pronta interazione del sistema controllato con l'ambiente.

- Capacità di comunicazione: al termine del corso lo studente sara' in grado di comunicare autonomamente le scelte progettuali effettuate nella progettazione di un sistema embedded di tempo reale.

- Capacità di apprendimento: lo studio permetterà lo sviluppo di abilità di apprendimento autonomo e di approfondimento di argomenti collaterali a quelli presentati nel corso.