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

Docente: Tullio Vardanega
(Ultimo aggiornamento: 19 gennaio 2016 ore 23:20)
[inserito materiale seminario finale]

Presentazione del corso

Obiettivi

L'insegnamento si propone di:
L'insegnamento si articola in due segmenti sequenziali e complementari.
  1. Nel primo segmento si prendono in esame modelli e paradigmi di programmazione concorrente, concentrandosi sulla concorrenza direttamente esprimibile a linguaggio (ossia senza ricorso a librerie di sistema) utilizzando Ada e Java per studiarne e raffrontarne le tecniche di realizzazione concreta.
  2. Nel secondo segmento si affronta l'evoluzione architetturale tecnologica dei sistemi distribuiti, attraverso il modello CORBA che fissa paradigma di interconnessione di sistemi eterogenei secondo il modello cliente-servente adottato in diverse piattaforme tradizionali, per poi vedere il cambio di prospettiva comportato dall'avvento del modello Cloud.

Nell'ambito di entrambi i segmenti dell'insegnamento, il docente proporrà allo studente esercizi da realizzare in proprio e poi discutere in aula per sperimentare direttamente le problematiche progettuali e realizzative, e i paradigmi di soluzione illustrati a lezione.

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 Materiale didattico
Sistemi concorrenti
2
9 ottobre
1 Lezione: Requisiti della programmazione concorrente
Esempio 1: Tre modi di programmare il sistema visto a lezione
1.§1-2
3
12 ottobre
2
14 ottobre
3
Lezione: Comunicazione tra processi in un sistema concorrente
Esempio 2: Soluzioni concorrenti al problema dei filosofi a cena
1.§3
16 ottobre
4
Lezione: Un modello di concorrenza concreto
Esercizio: "Master e dependent": Studiare il comportamento del programma concorrente dato
Esercizio: "Il crivello di Eratostene". Compilare, eseguire e analizzare le caratteristiche salienti del programma concorrente proposto per la realizzazione dell'algoritmo
1.§4
4
19 ottobre
5
Continuazione lezione 4
21 ottobre
6
Lezione: Il modello rendez-vous
Esempio 3:"Il crivello di Eratostene bis"
1.§5
23 ottobre
7
Lezione: Estensioni del modello rendez-vous
Esercizio
: "Il crivello di Eratostene ter". Compilare, eseguire e analizzare tutte le differenze strutturali del programma proposto rispetto alla soluzione precedente
1.§6
5
26 ottobre
8
Continuazione lezione 7

28 ottobre 9 Lezione: Risorse protette
Esempio 4: "Controllo di accodamento"
Esempio 5: "Sistema produttore consumatore con bounded buffer"
Esempio 6: "Il barbiere che dorme"
Per approfondire: Per Brinch Hansen: "Structured Multiprogramming" (CACM, 1972)
Per approfondire: Astrazioni realizzabili mediante risorsa protetta
1: semaforo 2: segnali persistenti 3: segnali transitori
4: messaggi in diffusione 5: eventi 6: barriere
Per approfondire: soluzioni programmatiche per la condivisione di risorse
1.§7
30 ottobre
10
Lezione: Criteri di sincronizzazione
Esempio 7: "Allocazione di risorse"
Esercizio: Migliorare l'efficienza della soluzione dell'esempio 7
Per approfondire: Toby Bloom: "Evaluating Synchronization Mechanisms" (CACM, 1979)
Per approfondire: Il modello di concorrenza in C#
Per approfondire: Per Brinch Hansen sulla concorrenza in Java
1.§8
6
2 novembre
11
Continuazione lezione 10

4 novembre
12 Lezione (Esempio 8): "Sistema ferroviario"
Esercizio: Analizzare la soluzione dell'esempio 8 e realizzare la stessa semantica concorrente utilizzando un linguaggio alternativo a piacere, discutendo i problemi riscontrati e le differenze eventualmente irriducibili

6 novembre
13
Lezione: Correttezza temporale
Esempio 9: "Controllo di deviazione locale"
Esempio 10: "Pattern di architettura concorrente"
Per approfondire:
Definizione dei protocolli di priority inheritance
Una critica alla priority inheritance
Una risposta alla critica
Un modello di riferimento per politiche di ordinamento




Argomenti opzionali:
Trattamento di eventi asincroni (1.§9)
Interazione tra concorrenza e orientazione a oggetti
Per approfondire: Il problema dell'inheritance anomaly
1.§13-14
Sistemi distribuiti
7
9 novembre 14 Lezione: Cenni sulla virtualizzazione
11 novembre
15
Lezione: Definizione e architettura di sistema distribuito
Per approfondire: Topologie di interconnessione
2.§1-2
13 novembre
16
Continuazione lezione 15

Questionario valutazione didattica
8
18 novembre E
Esercitazioni di ripasso, in aula
20 novembre E
Esercitazioni di ripasso, in aula
9
23 novembre
17
Lezione: Modelli di comunicazione in un sistema distribuito
2.§4
25 novembre
18
Continuazione lezione 17
Esempio 11: Trasparenza di distribuzione a livello linguaggio
27 novembre
19
Lezione: Processi e concorrenza in un sistema distribuito
Per approfondire: La specifica stateless del server NFS
2.§3,10.2
11 11 dicembre 20 Continuazione lezione 19
12
14 dicembre
21
Lezione: Denominazione di entità 2.§5
16 dicembre
(09:30-13:15)
22-23
Continuazione lezione 21
Introduzione lezione 24

18 dicembre
24
Lezione: Sincronizzazione in un sistema distribuito
Per approfondire: Uso del "distributed snapshot" di Chandy e Lamport
2.§6.3-5

13

8 gennaio
25
Continuazione lezione 24
Esercitazione con Esempio 12: "Implementazione dell'algoritmo Chandy-Lamport"
Per approfondire: Materiale di lezione @ Cornell University (Ken Birman)

14
11 gennaio
26
Lezione: Il modello Java RMI
Esempio 12: "Un semplice eco esposto al rischio di data race"
2.§10.3.4
13 gennaio
(09:30-13:15)
27-28
Lezione: Il modello di distribuzione nativo in Ada
Altri esempi d'uso di DSA: (1), (2)
Per approfondire (uso): Ada Gems 84, 85, 87, 20
Per approfondire (implementazione middleware): GLADE, RT-GLADE
Esempio 13: "Crivello di Eratostene in versione distribuita" - codice
Per approfondire: YAMI4: un middleware per scambio messaggi in distribuito
PolyORB
15 gennaio
29
Lezione: Il modello CORBA
Per approfondire: CORBA Portable Object Adapter

15
18 gennaio
30
Seminario: Cloud computing

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 stanza 400 il:

Modalità di esame

L'esame di profitto si svolgerà, in forma preferenziale, tramite la realizzazione e discussione di un progetto di sistema concorrente e distribuito assegnato dal docente. La realizzazione del progetto potrà essere intrapresa in gruppi comprendenti fino a un massimo di 3 componenti. La discussione del progetto si terrà attraverso una presentazione pubblica delle sue caratteristiche salienti.
In alternativa, l'esame consterà dello studio e presentazione pubblica di un problema o tecnologia significativi nel panorama della concorrenza, del parallelismo, o della distribuzione.

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