Programma del corso in pdf

Programma del corso “Informatica e Sistemi in Tempo Reale” Docente: Prof. Giorgio Buttazzo Crediti: 6 Obiettivi: L'obiettivo di questo corso è quello di insegnare le tecniche e le metodologie informatiche necessarie a fornire un supporto di calcolo affidabile per lo sviluppo di sistemi di controllo complessi ad elevata prevedibilità. Il corso fornisce agli studenti gli elementi essenziali per progettare software interattivo costituito da numerose attività concorrenti e analizzarne il comportamento temporale. Descrizione: Dopo aver fornito i fondamenti per la programmazione concorrente, il corso introduce un modello per rappresentare ed analizzare attività di calcolo con vincoli temporali. In particolare, verranno introdotti algoritmi per la gestione di task periodici e aperiodici, protocolli per la gestione della concorrenza e l’uso di risorse condivise, meccanismi di comunicazione sincroni ed asincroni, e metodologie per la gestine dei sovraccarichi. Argomenti: 1.
2.
3.
4.
5.
6.
Concetti di base sui sistemi di calcolo in tempo reale. Domini applicativi. Requisiti di sistema. Limiti degli approcci tradizionali. Metriche per la valutazione delle prestazioni. Modellazione di processi di calcolo. Vincoli temporali espliciti ed impliciti. Vincoli di precedenza. Vincoli su risorse condivise. Meccanismi per la gestione della concorrenza e sui metodi di accesso a risorse condivise mutuamente esclusive. Algoritmi per la schedulazione di processi real‐
time. Gestione di task periodici. Analisi di schedulabilità e dei tempi di risposta. Gestione di attività aperiodiche. Bloccaggi dovuti all’uso di risorse condivise. Fenomeno di Priority Inversion. Protocolli per accesso a risorse mutuamente esclusive: Non Preemptive Protocol, Highest Locker Priority, Priority Inheritance, Priority Ceililng, Stack Resource Policy. Stima dei tempi di bloccaggio. Analisi di schedulabilità con bloccaggio. Algoritmi per la gestione dei sovraccarichi. Definizione di carico computazionale. Controllo delle attivazioni, schedulazione adattive e task elastici. Gestione degli overrun. Meccanismi di comunicazione real time. Problematiche di sincronizzazione tra task periodici. Porte di comunicazione. Cyclic Asynchronous Buffers. Esempi di programmazione concorrente su Linux mediante libreria Pthread. Conoscenze richieste Conoscenze di base di matematica e fisica. Archiettura dei calcolatori. Fondamenti di informatica. Linguaggi di programmazione ad alto livello (C, C++). Esame: Progetto software e prova scritta. Materiale didattico: • Slide fornite dal docente. Sito Web: • Libri di testo: 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. http://retis.sssup.it/~giorgio/rts‐ISTRE.html