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

Docente: Tullio Vardanega
(Ultimo aggiornamento: 4 gennaio 2020 ore 10:55)
[pubblicato materiale lezioni settimana 13]

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
2
9 ottobre
1 Lezione: la nozione di run-time support
10 ottobre
2
Lezione: la multiprogrammazione a livello di sistema operativo
3
16 ottobre
3
Lezione: virtualizzazione
Esercizio: approfondire il funzionamento "under the hood" di Virtualbox
17 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
4
23 ottobre
5
Lezione: continuazione lezione 4
24 ottobre 6 Lezione: comunicazione tra processi concorrenti
5
30 ottobre
7
Lezione: continuazione lezione 6
Per studio autonomo: il modello base di concorrenza in Ada
Risorse supplementari 
Esempio: master & dependent
31 ottobre
8
Lezione: comunicazione sincrona
Esempio: una soluzione al problema dei filosofi a cena
6
6 novembre 9 Lezione: continuazione lezione 8
Esercizio: crivello di Eratostene: versione sincrona
7 novembre
10
Lezione: comunicazione asincrona
Esempio: controllo di accodamento
Esempio: sistema produttore consumatore con bounded buffer
Esercizio: crivello di Eratostene: versione asincrona
Per approfondire: Per Brinch Hansen: "Structured Multiprogramming" (CACM, 1972)
7
13 novembre 11 Lezione (in modalità flipped): altri modelli di concorrenza
14 novembre 12 Lezione: meccanismi di sincronizzazione avanzati
Esempio: allocazione di risorse
Per approfondire: Toby Bloom: "Evaluating Synchronization Mechanisms" (CACM, 1979)
8
20 novembre 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
21 novembre 14 Lezione: visione architetturale di sistema distribuito
Per approfondire: topologie di interconnessione
9
27 novembre 15
Lezione: continuazione lezione 14
28 novembre 16
Lezione: comunicazione in distribuito
Per approfondire: naming e DNS
10
4 dicembre
(10:30-14:00, 1BC45)
17-18 Lezione: concorrenza in distribuito
Per approfondire: statelessness
6 dicembre
(13:00-14:30
1BC45)
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)
Questionario valutazione didattica: restituzione 12 dicembre 2019
Valutazione via Uniweb: 5 dicembre 2019 - 29 febbraio 2020
11
12 dicembre 20
Lezione: il modello di distribuzione nativo di Java
12
19 dicembre 21
Lezione: il modello di distribuzione nativo in Ada
Esercizio: "crivello di Eratostene in versione distribuita" - codice
Altri esempi d'uso
: 1
Per approfondire (implementazione middleware): GLADE, RT-GLADE
Per approfondire: YAMI4: un middleware per scambio messaggi in distribuito
13
8 gennaio
(12:30-15:00)
22 Lezione: Cloud computing /1
- introduzione generale
- secondo Ken Birman @ Cornell Univ.
9 gennaio
(14:30-17:00)
23 Lezione: Cloud computing /2
- problematiche a livello applicazione
- riflessioni sulla scalabilità

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