Sistemi distribuiti/2006-2007

Da WikiDsy.


Informazioni generali

Docenti

Prof. Carlo Bettini
Dott. Sergio Mascetti (per la parte di laboratorio)

Orari delle lezioni

Mer 9.00 - 11.30 in aula Beta (via Comelico)
(con pausa di circa 15 minuti)

Orario di ricevimento studenti

Mar 17.30 in poi Stanza P121

Sito del corso

Pagina ufficiale del corso.

Materiale didattico

  • Testo: "Distributed Systems: Principles and Paradigms" Andrew S. Tanenbaum,

Martin Van Steen, 2nd Edition, Pearson Prentice Hall, 2007, ISBN: 0-13- 239227-5.

  • I lucidi delle lezioni sono presenti sul sito ufficiale del corso. Per accedere al materiale è necessario avere username e password.

Modalità d'esame

Il primo appello sarà il 13 Giugno e consisterà in un esame scritto (test a scelta multipla e domande a risposta aperta). Durante il corso si potrà lavorare ad un progetto nelle ore di laboratorio che verrà valutato alla fine delle lezioni pratiche.
Il voto sarà dato dalla media dei due voti ottenuti nelle due prove (verrà dato pari peso a pratica e teoria - 3 crediti per entrambe).
Se si decide di dare l'esame dopo giugno bisognerà sostenere un orale durante il quale si dovrà presentare anche il proprio progetto.

Progetto

Il testo del progetto sarà valido per un anno.

Diario del corso

Lezione di Mercoledì 7 marzo 2007

  • Introduzione
  • Definizione di "Sistema distribuito"
  • Trasparenza
  • Scalabilità
  • Concetti hardware
  • Concetti software
  • Tipi di sistemi distribuiti (sistemi di calcolo distribuito, sistemi informativi distribuiti, sistemi distribuiti pervasivi)

Lezione di Mercoledi' 14 Marzo

  • Ripasso pila ISO/OSI
  • Differenze tra comunicazione persistente/transiente e sincrona/asincrona
  • Servizi di comunicazione di alto livello:

1. Message oriented communication
2. Remote Procedure Call (RPC)
3. Remote Object Invocation
4. Stream

1. Message oriented communication: il prof ci ha mostrato un esempio tramite Berkeley sockets con relative primitive piu' utilizzate.
2. RPC: il prof ha spiegato il funzionamento del client e del server stub e i vari passi che avvengono nel caso di una RPC. Inoltre ha spiegato le differenze tra passaggio di parametri per valori e per riferimento e quando client e server sono sincroni o asincroni in RPC. Ha anche mostrato un esempio di un client e un server in DCE RPC.
3. Remote Object Invocation: è molto simile all'RPC con la differenza che utilizza oggetti anziche' procedure. Esempio: Java RMI.
4. Streams: accenno al funzionamento degli streams con vari esempi.

Lezione di Mercoledi' 21 Marzo

Prima lezione di Laboratorio tenuta dal dott. Mascetti.

  • breve ripasso del concetto di socket
  • socket in Java
    • esempio di un client/server TCP
    • esempio di un client/server UDP
  • primo esempio di thread in Java

I programmi di esempio mostrati a lezione verranno messi a disposizione sul sito del corso.

Lezione di Mercoledi' 28 Marzo

Algoritmi di sincronizzazione

  • Orologi fisici, che misurano il tempo "reale":
    • NTP
    • Berkeley Algorithm
  • Orologi logici, permettono di avere un ordinamento fra eventi del sistema anche se non sincronizzati con un orologio fisico esterno:
    • Algoritmo di Lamport

Algoritmi per mutua esclusione

  • Centralizzato
  • Distribuito
  • Ad Anello

Algoritmi di elezione

  • Algoritmo Bully
  • Algoritmo ad Anello

Lezione di Mercoledi' 4 Aprile

Seconda lezione di Laboratorio tenuta dal dott. Mascetti.

  • Server Concorrenti
  • Uso di sleep () , wait () e notify (), join ()
  • Esempi di codice di server multithread

Lezione di Mercoledì 11 Aprile

Non c'è stata lezione.

Lezione di Mercoledì 18 Aprile

Terza lezione di laboratorio tenuta dal Dott. Mascetti

  • Java RMI
  • Esempi di utilizzo di RMI
  • Presentazione del progetto (il testo del progetto e' disponibile sul sito del corso)

Lezione di Mercoledì 2 Maggio

Laboratorio in aula Delta.
E' stata aggiunta al testo del progetto una parte facoltativa.
Guardare il sito del corso per scaricare l'aggiornamento.