Scheda programma d'esame
REAL TIME AND DISTRIBUTED SYSTEMS
GIORGIO CARLO BUTTAZZO
Anno accademico2018/19
CdSEMBEDDED COMPUTING SYSTEMS
Codice608II
CFU12
PeriodoPrimo semestre
LinguaInglese

ModuliSettore/iTipoOreDocente/i
CONCURRENT DISTRIBUTED SYSTEMSING-INF/05LEZIONI60
LUCA ABENI unimap
ALESSANDRO BIONDI unimap
REAL TIME SYSTEMSING-INF/05LEZIONI60
GIORGIO CARLO BUTTAZZO unimap
Obiettivi di apprendimento
Learning outcomes
Conoscenze

RTS MODULE:

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

CDS MODULE:

Il modulo fornisce la conoscenza dei concetti chiave, delle metodologie, degli strumenti e delle tecniche per la programmazione parallela. Gli studenti impareranno i più importanti concetti di programmazione parallela e i metodi per utilizzarli in pratica nella programmazione. Essi impareranno a progettare e sviluppare un programma parallelo, analizzandone le proprietà. Gli studenti impareranno anche come thread o processi multipli possono sincronizzarsi o comunicare utilizzando meccanismi diversi. Le metodologie e gli algoritmi presentati nel modulo "Real-Time Systems" saranno anche estesi per prendere in considerazione più processori/core.

Knowledge

RTS MODULE:

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.

CDS MODULE:

The module provides the knowledge of the core concepts, methodologies, tools and techniques for parallel programming. Students will learn the most important parallel programming concepts and how to use them in practice. They will know how to analyze and reason about a parallel program and its properties (such as safety and liveness). Students will also learn how multiple threads or processes can synchronize or communicate using different mechanisms. The methodologies and algorithms presented in the "Real-Time Systems" module will also be extended to take multiple processors/cores into account.

Modalità di verifica delle conoscenze

Le conoscenze acquisite durante il corso verranno verificate attraverso un'assegnazione di progetto e durante l'esame.

Assessment criteria of knowledge

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

Capacità

RTS MODULE:

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.

CDS MODULE:

Gli studenti acquisiranno competenze nello sviluppo di programmi concorrenti e distribuiti utilizzando ambienti di programmazione esistenti, con particolare attenzione ai thread e ai monitor Java. Utilizzeranno un approccio basato sul modello per la progettazione, la costruzione e la verifica di un programma concorrente.

Skills

RTS MODULE:

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.

CDS MODULE

Students will acquire skills in developing concurrent and distributed programs using existing programming environments, with particular emphasis to Java threads and monitors. They will use a model-based approach to the design, construction and verification of a concurrent program.

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. Il modulo di Real-Time Systems è necessario per comprendere alcuni contenuti del modulo di Concurrent Distributed Systems.

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.
Il corso sarà erogato in lingua inglese.

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.

The course will be given in English.

Programma (contenuti dell'insegnamento)

RTS MODULE:

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.

CDS MODULE:

1. Concetti di base sulla programmazione parallela. Cooperazione, concorrenza e interferenza tra processi e thread concorrenti. Macchine concorrenti astratte.

2. Proprietà di un programma parallelo (safeness and liveness) e possibili errori: deadlock, starvation, corse critiche, unfairness.
3. Modello computazionale a memoria condivisa. Meccanismi di sincronizzazione. Lock, barriere, semafori e monitor.
4. Modello computazionale a scambio di messaggi e programmazione distribuita. Primitive di comunicazione tra processi. Primitive sincrone e asincrone a scambio di messaggi, chiamate di procedura remota e Rendezvous nei programmi distribuiti.
5. Algoritmi di scheduling in tempo reale per sistemi multiprocessore.
6. Algoritmi e protocolli di condivisione delle risorse in tempo reale per sistemi multiprocessore.

Syllabus

RTS MODULE:

  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.

CDS MODULE:

  1. Basic concepts on parallel programming. Cooperation, competition and interference among concurrent processes and threads. Abstract concurrent machines.
  2. Properties of a parallel program (safeness and liveness) and possible errors: deadlocks, starvation, critical races, unfairness.
  3. Shared memory model of computation. Synchronization mechanisms. Locks and barriers, semaphores and monitors.
  4. Message passing model of computation and distributed programming. Interprocess communication primitives. Asynchronous and synchronous message passing primitives, Remote Procedure Calls and Rendezvous in distributed programs.
  5. Multiprocessor real-time scheduling algorithms.
  6. Multiprocessor real-time resource sharing algorithms and protocols.
Bibliografia e materiale didattico

RTS MODULE:

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.

CDS MODULE:

  1. Gregory R. Andrews, “Foundations of Multithreaded, Parallel and Distributed Programming”, Addison Wesley, 2000.
  2. Paolo Ancilotti and Maurelio Boari, Programmazione Concorrente e Distribuita, McGraw-Hill, 2007.
  3. Jeff MageeandJeff Kramer, Concurrency: State Models & Java Programs, 2nd Edition, John Wiley & Sons  2006.
Bibliography

RTS MODULE:

  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.

Additional material will be provided on the course web site

CDS MODULE:

  1. Gregory R. Andrews, “Foundations of Multithreaded, Parallel and Distributed Programming”, Addison Wesley, 2000.
  2. Paolo Ancilotti and Maurelio Boari, Programmazione Concorrente e Distribuita, McGraw-Hill, 2007.
  3. Jeff MageeandJeff Kramer, Concurrency: State Models & Java Programs, 2nd Edition, John Wiley & Sons  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. Si consiglia vivamente di partecipare a tutte le lezioni per comprendere meglio la parte teorica e affrontare correttamente lo sviluppo del progetto.

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.

Ultimo aggiornamento 27/09/2018 16:33