Sistemi distribuiti

Da WikiDsy.
Versione del 12 apr 2006 alle 18:05 di Luna (discussione | contributi) (Lezione di Mercoledì 12 aprile 2006)

Informazioni generali

Docenti

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

Orari delle lezioni

Mer 9.00 - 11.30 in aula Alfa (via Comelico)
(con pausa di circa 20 minuti)

Orario di ricevimento studenti

Mar 17.30 - 19.30
Stanza P121

Sito del corso

Pagina ufficiale del corso.

Materiale didattico

  • Testo: "Distributed Systems: Principles and Paradigms" - Andrew S. Tanenbaum & Martin Steen Van - Prentice Hall, 2002, ISBN 0-13-088893-1
  • I lucidi delle lezioni sono presenti sul sito ufficiale del corso. Per accedere al materiale è necessario avere username e password.

Modalità d'esame

Se si sceglie di sostenere il primo appello (quello a giugno) si potrà lavorare ad un progetto durante le ore di laboratorio che verrà valutato alla fine delle lezioni pratiche. Le lezioni di laboratorio si svolgeranno nei giorni: 5, 12, 19, 26 aprile, 3 e 10 maggio in aula Sigma (via Comelico). Successivamente, a giugno, si sosterrà un esame scritto (test a scelta multipla e domande a risposta aperta). 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.

Il testo del progetto resta valido fino ad aprile 2007.

Diario del corso

Lezione di Mercoledì 8 marzo 2006

  • Introduzione
  • Definizione di "Sistema distribuito"
  • Trasparenza
  • Scalabilità
  • Concetti hardware
  • Concetti software

Lezione di Mercoledì 15 marzo 2006

  • Paragone tra sistemi
  • Esempio di Client
  • Esempio di Server
  • Architetture multitiered
  • Distribuzione verticale e orizzontale di un Web Server
  • Modello peer-to-peer
  • Livelli del modello OSI (breve ripasso)
  • Servizi di comunicazione middleware
  • Persistenza, mancanza di persistenza; sincronia, asincronia nella comunicazione
  • Socket
  • Remote Procedure Call
  • Remote Object Invocation

Note dal docente: il 7 giugno ci sarà la prova finale; la prossima lezione sarà molto importante (algoritmi di sincronizzazione)!!

Lezione di Mercoledì 22 marzo 2006

  • Sincronizzazione (capitolo 5 del Tanenbaum)
    • Clock
    • Orologi fisici, TAI, UTC
    • Cristian's Algorithm
    • The Berkley Algoritm
    • Orologi Logici
    • Algoritmo di Lamport
    • Esempi e applicazioni
    • Stato Globale di un Sistema Distribuito
    • Algoritmo per Distributed Snapshot
    • Elezione di un coordinatore
    • L'algoritmo di Bully per l'elezione di un coordinatore
    • L'algoritmo ad anello (Ring/Token Ring algorithm)
    • Mutual Exclusion - Un algoritmo centralizzato

Note dal docente: le prossime 5 lezioni saranno dedicate alla parte di laboratorio; di queste cinque, le prime tre si terranno in aula Alfa, le ultime due in aula Sigma.

Lezione di Mercoledì 29 marzo 2006

  • Elementi fondamentali delle reti TCP/IP
  • Il livello di trasporto: TCP e UDP
  • Programmazione con le socket: cosa sono e come si usano
  • Esempio e commento del codice per la comunicazione di un client e di un server in TCP usando le socket
  • Esempio e commento del codice per la comunicazione di un client e di un server in UDP usando le socket (concetto di datagramPacket)

Lezione di Mercoledì 05 aprile 2006

  • Server Concorrenti
  • Progettare un server concorrente
  • Thread in Java
  • Versione Multithread del TCP Server
  • Sincronizzazione
    • Metodi non sincronizzati
    • Metodi sincronizzati
  • Struttura di un server concorrente
  • Join(), Sleep(), Wait(), Notify()

Lezione di Mercoledì 12 aprile 2006

  • RMI
  • Registry
  • Stub
  • Funzionamento RMI
  • Creazione di un sistema distribuito con RMI
    • Definizione interfaccia remota
    • Definizione implementazione oggetto remoto
    • Definizione della classe che associa una stringa all'oggetto remoto
    • Definizione dell'applicazione client
    • Compilazione ed esecuzione oggetto remoto e client
  • Esempi di client-server con RMI
  • Presentazione del progetto