Scheda programma d'esame
COMPUTER SCIENCE AND REAL TIME SYSTEMS
GIORGIO CARLO BUTTAZZO
Academic year2022/23
CourseROBOTICS AND AUTOMATION ENGINEERING
Code274II
Credits6
PeriodSemester 1
LanguageEnglish

ModulesAreaTypeHoursTeacher(s)
INFORMATICA E SISTEMI IN TEMPO REALEING-INF/05LEZIONI60
GIORGIO CARLO BUTTAZZO unimap
Obiettivi di apprendimento
Learning outcomes
Conoscenze

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.

 

Knowledge

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.

 

Modalità di verifica delle conoscenze

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.

Assessment criteria of knowledge

The knowledge acquired during the course will be verified through a project assignment and during the exam.

Capacità

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.

Skills

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.

Modalità di verifica delle capacità

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.

Assessment criteria of skills

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.

Comportamenti

Gli studenti avranno l'opportunità di sviluppare il progetto in un piccolo gruppo, condividendo la responsabilità nella gestione dello sviluppo delle applicazioni.

Behaviors

Students will be given the opportunity to develop the project in a small team, sharing the responsibility in managing the application development.

Modalità di verifica dei comportamenti

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.

Assessment criteria of behaviors

During the discussion of the project, students are required to explain their specific contribution in the development of the work.

Prerequisiti (conoscenze iniziali)

Conoscenze di base su matematica, fisica, architetture di elaborazione, linguaggi di programmazione e sistemi operativi.

Prerequisites

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.

Indicazioni metodologiche

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.

Teaching methods

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.

Programma (contenuti dell'insegnamento)

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).

Syllabus

 

  1. Basic concepts on real-time computing. Application domains. Typical system requirements. Limits of traditional approaches. Task models. Typical timing constraints. Task Scheduling. Metrics for performance evaluation.
  2. Real-Time scheduling algorithms. Algorithm taxonomy. Scheduling with precedence constraints. Scheduling periodic tasks. Utilization-based analysis. Response-time analysis.
  3. Protocols for accessing shared resources. The priority inversion phenomenon. Non-preemptive protocol, Highest Locker Priority, Priority Inheritance and Priority Ceiling Protocol. Stack Resource Policy. Estimating blocking times. Schedulability analysis under blocking times.
  4. Aperiodic task handling. Fixed-priority servers (Polling, Deferrable and Sporadic Server). Dynamic priority servers (Total and Constant Bandwidth Server). Resource reservation for temporal isolation among multiple applications.
  5. Overload management. Definition of computational load. Methods for overload handling. Admission Control. Robust Scheduling. Imprecise Computation. Job Skipping. Elastic scheduling. Handling overruns. Resource reservation mechanisms.
  6. Practical guidelines to design and develop real-time software using the Pthread library under Linux.
Bibliografia e materiale didattico

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.

Bibliography

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.

Indicazioni per non frequentanti

La frequentazione del corso è altamente consigliata per meglio comprendere gli aspetti teorici e affrontare correttamente lo sviluppo del progetto.

Non-attending students info

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.

Modalità d'esame

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.

Assessment methods

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.

Stage e tirocini

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.

Updated: 29/07/2022 11:18