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

Docente: Tullio Vardanega
(Ultimo aggiornamento: 15 gennaio 2017 ore 17:20)
[pubblicato materiale lezione 23]
<Elenco studenti interessati alle attività flipped classroom>

Presentazione del corso

Obiettivi

L'insegnamento si propone di illustrare problematiche architetturali e modelli di computazione di concorrenza e distribuzione (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
6 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
13 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: comunicazione tra processi concorrenti
20 ottobre
6
Lezione: continuazione lezione 5
Per approfondire: il modello base di concorrenza in Ada
Esempio: master & dependent
Esempio: crivello di Eratostene
4
24 ottobre
7
Lezione: comunicazione sincrona
Esempio: una soluzione al problema dei filosofi a cena
Esempio: una implementazione sincrona del crivello di Eratostene
27 ottobre
8
Lezione: comunicazione asincrona
Esempio: controllo di accodamento
Esempio: sistema produttore consumatore con bounded buffer
Per approfondire: Per Brinch Hansen: "Structured Multiprogramming" (CACM, 1972)
5 03 novembre 9 Lezione: meccanismi di sincronizzazione avanzati
Esempio: allocazione di risorse
Per approfondire: Toby Bloom: "Evaluating Synchronization Mechanisms" (CACM, 1979)
04 novembre
15:30-17:15
1BC45
10 Esercitazione: sistema ferroviario
Esercizio: risolvere il problema in un linguaggio concorrente a piacere, analizzando le differenze significative di semantica realizzata
6
07 novembre
11
Lezione (flipped classroom): altri modelli di concorrenza (2,63 MB)
10 novembre
12
Lezione: visione architetturale di sistema distribuito
Per approfondire: topologie di interconnessione
11 novembre
15:30-17:15
1BC45
13 Lezione: continuazione lezione 12
7
14 novembre

aula ceduta a: Advanced Topics in Computer Science
17 novembre 14 Lezione: comunicazione in distribuito
Per approfondire: naming e DNS
8  24 novembre
15
Lezione: uso di concorrenza in distribuito
Per approfondire: statelessness
9 28 novembre - lezione annullata
01 dicembre
16
Lezione: sincronizzazione in distribuito
Per approfondire: uso del "distributed snapshot" di Chandy e Lamport
Per approfondire: materiale di lezione @ Cornell University (Ken Birman)
Questionario valutazione didattica
10
05 dicembre 17
Lezione (flipped classroom): implementazioni del distributed snapshot
11
12 dicembre 18
Lezione: il modello Java RMI
15 dicembre
19
Lezione: il modello di distribuzione nativo in Ada
Esercizio: "crivello di Eratostene in versione distribuita" - codice
Altri esempi d'uso di DSA
: (1), (2)
Per approfondire (uso): Ada Gems 84, 85, 87, 20
Per approfondire (implementazione middleware): GLADE, RT-GLADE
Per approfondire: YAMI4: un middleware per scambio messaggi in distribuito
16 dicembre
15:30-17:15
1BC45
20
Lezione: il modello CORBA
Per approfondire: CORBA Portable Object Adapter
12 09 gennaio
21
Lezione: Cloud computing (1)
- introduzione generale
- visione dall'alto secondo Ken Birman (Cornell Univ.)
12 gennaio 22 Lezione: Cloud computing (2)
- problematiche a livello applicazione
13
16 gennaio
23
Lezione: Cloud computing (3)
- riflessioni sulla scalabilità
- problematiche a livello piattaforma
19 gennaio
24
Lezione: (flipped classroom): altri modelli di distribuzione a livello di linguaggio
Assegnazione dei temi d'esame

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 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 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