SSD: ING-INF/05
CFU: 9
Insegnamenti propedeutici (se previsti dall'Ordinamento del CdS)
Nessuno.
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.
Risultati di apprendimento attesi
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
Si veda il sito web del docente della materia.
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
Modalità di esame
L'esame si articola in prova scritta e orale. In caso di prova scritta i quesiti sono: a risposta libera, esercizi numerici.