Corso di Sistemi Concorrenti e Distribuiti
Corso di Laurea Specialistica in Informatica
Università di Padova, a.a. 2007/8

Docente: Tullio Vardanega
(Ultimo aggiornamento: 9 marzo 2008 ore 21:20)
[inserito materiale lezione 23]

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, culminando nell'analisi di CORBA come paradigma di interconnessione di sistemi eterogenei secondo il modello cliente-servente.

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 ed i paradigmi di soluzione illustrati a lezione.

Propedeuticità obbligatorie strette

Architettura degli Elaboratori 2. (A partire dall'a.a. 2007/8: Sistemi Operativi; Reti di Elaboratori.)

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
Testo consigliato come eventuale complemento:

Strumenti di lavoro

Ada IDE (offerto da AdaCore)

Calendario delle lezioni

Settimana Data Lezione Contenuto Materiale didattico
Sistemi concorrenti
1 14 gennaio 1 Lezione: Programmazione concorrente
Esempio 1: 3 modi di programmare il sistema visto a lezione
Esempio A: Il modulo "Calendario"
Esempio B: Il modulo "Tempo Reale"
1.§1-2
15 gennaio 2
16 gennaio 3 Lezione: Communicazione tra processi in un sistema concorrente
Si svolgano gli esercizi 1-3 descritti nel materiale di lezione
1.§3
2 21 gennaio 4 Lezione: Un modello di concorrenza concreto
Esercizio 4: "Il crivello di Eratostene". Compilare, eseguire e analizzare le caratteristiche salienti del programma concorrente proposto per la realizzazione dell'algoritmo
Esercizio 5: descritto nel materiale di lezione
Esercizio 6: "Il barbiere che dorme"
Esercizio 7: "I filosofi a cena"
1.§4
22 gennaio 5 Lezione: Il modello rendezvous
Esempio:"Il crivello di Eratostene rivisitato"
1.§5
23 gennaio 6 Ancora su argomenti di lezione 5 1.§5
3 28 gennaio  
Assenza del docente

29 gennaio  
Assenza del docente

30 gennaio
7

Lezione: Estensioni del modello rendezvous
Esercizio 8
: "Il crivello di Eratostene ter": compilare, eseguire e commentare tutte le differenze strutturali del programma proposto rispetto alla soluzione esaminata nell'esercizio 4
Esercizio 9: "I filosofi a cena - soluzione rivisitata"

1.§6
4 4 febbraio 8
Lezione: Risorse protette
Esempio: "Controllo di accodamento"
1.§7
5 febbraio 9
Lezione: Criteri di sincronizzazione
Esempio: "Allocazione di risorse"
Esercizio 10: Migliorare la soluzione proposta nell'esempio "Allocazione di risorse" risolvendone il problema di inefficienza secondo le indicazioni fornite nel testo
Esercizio 11: Si risolva il problema illustrato a pagina 14 della lezione C07 usando il modello di concorrenza sin qui illustrato, provando poi a realizzare la stessa semantica usando un linguaggio di programmazione alternativo a piacere. Si raffrontino poi le soluzioni ottenute
Per approfondire: Toby Bloom, Evaluating Synchronization Mechanisms, CACM 1979
Per approfondire: Il modello di concorrenza in C#
1.§8
6 febbraio 10 Lezione: Correttezza temporale
Per approfondire:
Definizione dei protocolli di priority inheritance
Una critica alla priority inheritance
Una risposta alla critica
1.§13-14


Per studio personale: astrazioni realizzabili mediante risorsa protetta
1: semaforo 2: segnali persistenti 3: segnali transitori
4: messaggi in diffusione 5: eventi 6: barriere
 
5 11 febbraio 11 Lezione: Trattamento di eventi asincroni
Esempio: "Sistema ferroviario"
Esercizio 12: Analizzare la soluzione mostrata nell'esempio "Sistema ferroviario" e discussa alle pagine 15-17 della lezione C07, e realizzare la stessa semantica concorrente utilizzando un linguaggio alternativo a piacere, discutendo i problemi riscontrati e le differenze eventualmente irriducibili
Per approfondire: Un modello di riferimento per politiche di ordinamento
1.§9
12 febbraio 12 Lezione: Interazione tra concorrenza e orientazione a oggetti
Per approfondire: Il problema dell'inheritance anomaly
1.§10
13 febbraio 13
Ricapitolazione prima parte
Presentazione del progetto didattico
 
Sistemi distribuiti
6 18 febbraio 14 Lezione: Definizione e architettura di sistema distribuito 2.§1-2
19 febbraio 15 Lezione: Modelli di comunicazione in un sistema distribuito 2.§4
20 febbraio 16
7 25 febbraio 17 Lezione: Processi e concorrenza in un sistema distribuito
Per approfondire: La specifica stateless del server NFS
2.§3
26 febbraio 18 Lezione: Denominazione di entità 2.§5
27 febbraio
19
Lezione: Sincronizzazione tra processi in un sistema distribuito
Per approfondire: Uso del "distributed snapshot" di Chandy e Lamport
2.§6.3-5
8 3 marzo 20 Lezione: Il modello Java RMI
Esempio: "Un semplice ripetitore"
2.§10.3.4
4 marzo
21 Lezione : Il modello di distribuzione nativo in Ada (1/2) GLADE (doc)
GLADE (lib)
5 marzo
(valutazione
didattica)

22 Lezione: Il modello di distribuzione nativo in Ada (2/2)
Esempio (Crivello di Eratostene in versione distribuita - codice)
9 10 marzo 23 Lezione: Il modello CORBA 2.§10
PolyORB (doc)
PolyORB (lib
11 marzo  
Assenza del docente

12 marzo 24 Esercizi di progettazione e programmazione distribuita
Ricapitolazione seconda parte
 

  Esami Per discussione del progetto (vedi modalità)

Note pratiche

Le lezioni indicate in calendario si terranno, nella nuova sede del Dipartimento, con l'orario e la collocazione seguenti:

Ricevimento studenti

Il ricevimento studenti si tiene (salvo diverso avviso) in stanza 409 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 ad 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

Liste di iscrizione all'esame verranno pubblicate sul sistema SIS nelle due settimane precedenti l'appello corrispondente.

I sessione (orale)

II sessione (orale)

III sessione (orale)