SCHEDA DELL'INSEGNAMENTO (SI)
SSD ING-INF/05
CORSO DI STUDI: LAUREA MAGISTRALE IN INGEGNERIA DELL’AUTOMAZIONE E ROBOTICA
ANNO ACCADEMICO: 2022-2023

INFORMAZIONI GENERALI - DOCENTE
Docente: Marcello Cinque
Telefono: +39 0817683874
Email: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.
INFORMAZIONI GENERALI - ATTIVITÀ
INSEGNAMENTO INTEGRATO (EVENTUALE):
MODULO (EVENTUALE):
CANALE (EVENTUALE):
ANNO DI CORSO (I, II, III): I
SEMESTRE (I, II): II
CFU: 9

(se previsti dall'Ordinamento del CdS)
...................................................................................................................................................

EVENTUALI PREREQUISITI
Conoscenze di base di programmazione

OBIETTIVI FORMATIVI
Il corso fornisce le conoscenze di base sui sistemi in tempo reale, sulla schedulazione di task real-time, sulla gestione delle risorse, sulle reti di calcolatori e sui sistemi operativi adottati in ambito industriale. Fornisce inoltre le competenze necessarie alla progettazione, il dimensionamento e lo sviluppo di sistemi in tempo reale. Le esercitazioni consistono in applicazioni di programmazione concorrente con task real-time sviluppate in diversi ambienti (real-time LINUX, FreeRTOS, ChibiOS) e progettazione OO di software real-time attraverso SysML e il profilo OMG MARTE.

(Descrittori di Dublino)
Conoscenza e capacità di comprensione
Lo studente deve dimostrare: di conoscere le problematiche dell’elaborazione in tempo reale, di saper illustrare i fondamenti teorici relativi agli algoritmi per lo scheduling di task periodici e aperiodici e per la gestione delle risorse condivise con vincoli temporali, e relativi test di fattibilità, di saper riconoscere le principali soluzioni per la comunicazione in rete con vincoli temporali, di comprendere i principi di programmazione concorrente applicati ai sistemi real-time.
Capacità di applicare conoscenza e comprensione
Lo studente deve dimostrare di saper astrarre problemi di progettazione di sistemi in tempo reale e di ricondurli ad opportuni modelli teorici atti alla verifica della fattibilità, di saper risolvere problemi di dimensionamento di sistemi real-time attraverso le metodologie e gli algoritmi appresi, di saper progettare sistemi complessi attraverso strumenti di astrazione e modellazione di alto livello, di saper implementare sistemi software real-time utilizzando primitive per la gestione dei task periodici e aperiodici e per l’inter-process communication in tempo reale.

PROGRAMMA-SYLLABUS
Concetti Introduttivi. Introduzione ai sistemi in tempo reale: campi applicativi. dimensionamento, deadline, sistemi hard e soft real-time, caratteristiche desiderabili; problematiche di progetto e sviluppo.
Prevedibilità dei sistemi di calcolo. Fonti di non determinismo hardware e del Sistema Operativo. Introduzione allo Scheduling. Processo e programma. Schedulazione, fattibilità, schedulabilità, ottimalità, preemption.
Scheduling di task real time. Algoritmo di Jackson, algoritmo di Horn, algoritmo di Bratley. Scheduling con vincoli di precedenza. Timeline Scheduling, Rate Monotonic (RM). Earliest Deadline First (EDF), Deadline Monotonic. Ottimalità e test di garanzia. Response Time Analysis. Processor Demand Criterion per EDF.
Accesso a risorse condivise. Il problema della priority inversion. Non-preemptive protocol. Highest locker priority. Priority Inheritance e Priority Ceiling. Analisi di schedulabilità, calcolo dei tempi di bloccaggio. Stack Resource Policy.
Server aperiodici. Schedulazione in background. Polling Server (PS). Deferrable Server (DS), Sporadic Server (SS), Slack Stealer. Dynamic Sporadic Server (DSS), Total Bandwidth Server (TBS), Costant Bandwidth Server (CBS).
Gestione dei sovraccarichi. Carico, valore cumulativo, fattore competitivo. Admission control; robust scheduling, resource reservation con CBS. Algoritmo RED. Job skipping, period adaptation e service adaptation.
Comunicazione Real-time. I protocolli CSMA/CD e Token Ring. Modelli di traffico real-time. Fonti di non determinismo nelle reti. Controller Area Network (CAN), ProfiNET ed Ethernet Power Link. RTNet. Weighted Fair Queuing, RSVP e RTP (cenni). RTPS e Standard DDS. Esempi applicativi.
Analisi del Worst Case Execution Time. Metodi statici e metodi measurement-based. Bound caluculation: path-based, structure-based e implicit path enumeration (IPET). Esempi di tool statici e measurement-based.
Real Time Operating Systems (RTOS): Primitive per la programmazione di applicazioni concorrenti in ambiente real-time. Colloquio con le periferiche, RTOS commerciali ed Open Source, introduzione a FreeRTOS, ChibiOS e Linux real-time. Sviluppo di applicazioni concorrenti real-time in tali ambienti.
Standard e Certificazioni. La standardizzazione, standard per RTOS: RT-POSIX, OSEK, AUTOSAR, ARINC, MICRO-ITRON. Standard di certificazione: DO-178B, IEC61508.
Progettazione di Sistemi Real Time con SysML e OMG MARTE. Model driven engineering. UML2 ed estensioni: profili, metamodelli e stereotipi. Progettazione con SysML. Specifica MARTE. Esempi in ambiente integrato (Papyrus).
MATERIALE DIDATTICO
- Libro di testo:
· G. Buttazzo “Sistemi in tempo reale”, Pitagora editrice
- Trasparenze delle lezioni, dispense didattiche ed articoli scientifici di approfondimento disponibili sul sito docente.

MODALITÀ DI SVOLGIMENTO DELL'INSEGNAMENTO
La didattica è erogata
a) per il 70% con lezioni frontali e
b) per il 30% con esercitazioni guidate in aula per approfondire praticamente gli aspetti relativi all’utilizzo di sistemi operativi real-time e alla programmazione di task real-time.
Gli argomenti delle lezioni frontali e dei seminari sono esposti con l’ausilio di trasparenze dettagliate, messe a disposizione dello studente nel materiale didattico tramite il sito web ufficiale del docente.

VERIFICA DI APPRENDIMENTO E CRITERI DI VALUTAZIONE
a) Modalità di esame:
L'esame si articola in prova: | |
Scritta e orale | ![]() |
Solo scritta | |
Solo orale | |
Discussione di elaborato progettuale | |
Altro (prova al calcolatore) |
In caso di prova scritta i quesiti sono (*): | |
A risposta multipla | |
A risposta libera | ![]() |
Esercizi numerici | ![]() |
La prova scritta è suddivisa in due parti: 1) risoluzione di esercizi numerici e 2) un esercizio di programmazione concorrente real-time. La parte 2) può essere sostituita dallo svolgimento di due prove di programmazione in itinere, durante lo svolgimento del corso. Il codice consegnato durante il corso sarà oggetto di discussione all’orale.
b)Modalità di valutazione:
L’esito della prova scritta è vincolante ai fini dell’accesso alla prova orale. Il voto finale è stabilito come media degli esiti delle prove scritte e dell’orale.