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

Docente: Tullio Vardanega
(Ultimo aggiornamento: 10 gennaio 2015 ore 17:45)
[pubblicato materiale settimana 15]

Presentazione del corso

Obiettivi

Il corso si propone di:
Il corso 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, con attenzione al 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 del corso, il docente proporrà allo studente esercizi da realizzare in proprio in laboratorio per sperimentare direttamente le problematiche progettuali e realizzative, e i paradigmi di soluzione illustrati a lezione.

Propedeuticità obbligatorie strette

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 (Second 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
1
2 ottobre
1 Lezione: Programmazione concorrente
Esempio 1: tre modi di programmare il sistema visto a lezione
1.§1-2
2 6 ottobre
2
7 ottobre
(3h)
3
Lezione: Comunicazione tra processi in un sistema concorrente
Esempio 2: soluzioni concorrenti al problema dei filosofi a cena
Esercizio: Quelli descritti nel materiale di lezione
1.§3
3
13 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
14 ottobre
5
Continuazione lezione 4
16 ottobre
(3h)
6
Lezione: Il modello rendez-vous
Esempio 3:"Il crivello di Eratostene bis"
1.§5
4
20 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
21 ottobre
(3h)
8
Continuazione lezione 7

23 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
5
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
3 novembre
11
Continuazione lezione 10

4 novembre
(3h)
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
(3h)
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
10 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

8
17 novembre E
Esercitazioni di ripasso, in aula
20 novembre E
Esercitazioni di ripasso, in aula
9
24 novembre
17
Lezione: Modelli di comunicazione in un sistema distribuito
2.§4
25 novembre
(3h)
18
Continuazione lezione 17
Esempio 11: Trasparenza di distribuzione a livello linguaggio
Questionario valutazione didattica
10
01 dicembre
(15:30-17:45)
19
Lezione: Processi e concorrenza in un sistema distribuito
Per approfondire: La specifica stateless del server NFS
2.§3,10.2
11
11 dicembre
(15:30-16:30)
20
Lezione: Denominazione di entità
2.§5
12
15 dicembre
21
Continuazione lezione 20
16 dicembre
(15:30-16:15)
22
Lezione: Sincronizzazione in un sistema distribuito
Per approfondire: Uso del "distributed snapshot" di Chandy e Lamport
2.§6.3-5
18 dicembre
(3h)
23
Continuazione lezione 22
Esercitazione con Esempio 12: "Implementazione dell'algoritmo Chandy-Lamport"
Per approfondire: Materiale di lezione @ Cornell University (Ken Birman)
14
8 gennaio
24
Lezione: Il modello Java RMI
Esempio 12: "Un semplice eco esposto al rischio di data race"
2.§10.3.4

15

12 gennaio
25
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
PolyORB
13 gennaio
26
Continuazione lezione 25
Esempio 13: "Crivello di Eratostene in versione distribuita" - codice
Per approfondire: YAMI4: un middleware per scambio messaggi in distribuito
15 gennaio
(3h)
27
Lezione: Il modello CORBA
Per approfondire: CORBA Portable Object Adapter

16
19 gennaio
28
Approfondimenti, ripasso generale e assegnazione prova finale

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à mediante realizzazione e discussione di un progetto di sistema concorrente e distribuito assegnato dal docente in concomitanza con la fine delle lezioni. La realizzazione del progetto potrà essere intrapresa in gruppi comprendenti fino a un massimo di 3 componenti. La discussione del progetto realizzato sarà invece individuale e preceduta da una presentazione di esso da parte dello studente e/o del gruppo di appartenenza.

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