logo
Sistemi Concorrenti e Distribuiti
Corso di Laurea Magistrale in Informatica
Università di Padova, a.a. 2018/19

Docente: Tullio Vardanega
(Ultimo aggiornamento: 08 gennaio 2019 ore 21:25)
[pubblicato materiale lezioni 23-24]

Presentazione del corso

Obiettivi

L'insegnamento si propone di illustrare problematiche architetturali e modelli di computazione di concorrenza e distribuzione (dalle reti locali fino al Cloud) dal punto di vista del supporto a tempo d'esecuzione (aka runtime) necessario a realizzare le astrazioni offerte al programmatore.
L'insegnamento prevede alcune esercitazioni pratiche in aula e flipped classroom nelle quali gli studenti saranno chiamati ad approfondire specifici argomenti e risolvere alcune sfide.
L'insegnamento utilizza il linguaggio di programmazione Ada per illustrare alcuni astrazioni sofisticate e il loro utilizzo nella soluzione di problemi concreti.

Materiale didattico

  1. Concurrent and Real-Time Programming in Ada
    Alan Burns and Andy Wellings
    Cambridge University Press ISBN 978-0-521-86697-2

  2. Distributed Systems - Principles and paradigms (2nd edition)
    Andrew S Tanenbaum, Maarten van Steen
    Pearson Prentice Hall ISBN 0-13-239227-5

Risorse

Calendario delle lezioni

Settimana Data Lezione Contenuto
1
3 ottobre
1 Lezione: la nozione di run-time support
4 ottobre
2
Lezione: la multiprogrammazione a livello di sistema operativo
2
10 ottobre
3
Lezione: virtualizzazione
Esercizio: studiare il funzionamento "under the hood" di Virtualbox
11 ottobre
4
Lezione: requisiti di programmazione concorrente
Esercizio: individuare linguaggi in uso corrente che supportino coroutine o concorrenza
Per approfondire: il modello di concorrenza in C#
Per approfondire: Per Brinch Hansen sulla concorrenza in Java
Per approfondire: il problema dell'inheritance anomaly
3
17 ottobre
5
Lezione: continuazione lezione 4
18 ottobre 6 Lezione: comunicazione tra processi concorrenti
4
24 ottobre
7
Lezione: continuazione lezione 6
Per studio autonomo: il modello base di concorrenza in Ada
Risorse supplementari 
Esempio: master & dependent
Esempio: crivello di Eratostene
25 ottobre
8
Lezione: comunicazione sincrona
Esempio: una soluzione al problema dei filosofi a cena
Esempio: una implementazione sincrona del crivello di Eratostene
5 31 ottobre 9 Lezione: continuazione lezione 8
7
14 novembre
10
Lezione: comunicazione asincrona
Esempio: controllo di accodamento
Esempio: sistema produttore consumatore con bounded buffer
Per approfondire: Per Brinch Hansen: "Structured Multiprogramming" (CACM, 1972)
15 novembre 11 Lezione (in modalità flipped): altri modelli di concorrenza
8
21 novembre 12 Lezione: meccanismi di sincronizzazione avanzati
Esempio: allocazione di risorse
Per approfondire: Toby Bloom: "Evaluating Synchronization Mechanisms" (CACM, 1979)
23 novembre
(14:00-16:00)
13
Esercitazione (in modalità flipped): sistema ferroviario
Esempio di soluzione
Esercizio: risolvere il problema in un linguaggio concorrente a piacere, analizzando le differenze significative di semantica realizzata
Questionario valutazione didattica (06/12/2018-23/02/2019)
9
28 novembre 14 Lezione: visione architetturale di sistema distribuito
Per approfondire: topologie di interconnessione
29 novembre 15
Lezione: continuazione lezione 14
10
4 dicembre
(16:30-18:30)
16
Lezione: comunicazione in distribuito
Per approfondire: naming e DNS
5 dicembre 17 Lezione: uso di concorrenza in distribuito
Per approfondire: statelessness
6 dicembre 18 Lezione: continuazione lezione 17
11
12 dicembre 19
Lezione: sincronizzazione in distribuito
Esercizio: implementazione dimostrativa di terminazione sincronizzata
Per approfondire: uso del "distributed snapshot" di Chandy e Lamport
Per approfondire: materiale di lezione @ Cornell University (Ken Birman)
13 dicembre 20
Lezione: il modello Java RMI
12
19 dicembre 21
Lezione: il modello di distribuzione nativo in Ada
Esercizio: "crivello di Eratostene in versione distribuita" - codice
Altri esempi d'uso di DSA
: 1
Per approfondire (implementazione middleware): GLADE, RT-GLADE
Per approfondire: YAMI4: un middleware per scambio messaggi in distribuito
20 dicembre 22
Lezione: Cloud computing /1
- introduzione generale
- visione dall'alto secondo Ken Birman (Cornell Univ.)
13
9 gennaio 23 Lezione: Cloud computing /2
- problematiche a livello applicazione
10 gennaio
(16:00-17:30)
24 Lezione: Cloud computing /3
- riflessioni sulla scalabilità
Presentazione dei temi d'esame
14
16 gennaio 25
Eventuale recupero

Note pratiche

Le lezioni indicate in calendario si terranno con l'orario e la collocazione riportati sul sito del CCS di Informatica.

Ricevimento studenti

Il ricevimento studenti si tiene (per appuntamento) in studio 400 il:

Modalità d'esame

L'esame di profitto si svolgerà, in forma preferenziale, tramite studio e presentazione pubblica di un problema o tecnologia significativi nel panorama della concorrenza, del parallelismo, o della distribuzione in larga scala, visti nella prospettiva della materia, cioè sotto lo strato dell'applicazione. Il tema di studio verrà proposto dal docente, ma lo studente potrà esprimere proprie specifiche preferenze.
Per coloro che lo vorranno, l'esame potrà includere anche la sperimentazione pratica di tecnologie di interesse per la soluzione di "sfide" significative incontrate o evocate nell'insegnamento.
Le attività d'esame, in qualunque variante, potranno
essere svolte in gruppi comprendenti fino a un massimo di 3 componenti, con corrispondente crescita nell'ampiezza degli obiettivi.

Calendario degli appelli d'esame

L'esame si terrà per appuntamento, nei periodi corrispondenti alle sessioni d'esame previste dal calendario accademico.

Valid HTML
          4.01 Transitional