Anno accademico 2018-2019
SISTEMI DISTRIBUITI
Docenti:
Miculan Marino
Miculan Marino
Anno di corso: 1
Totale crediti: 9
Tipologia: Caratterizzante
Periodo didattico: Primo Periodo
Lingua insegnamento:
Inglese
Inglese
Prerequisiti.
Reti di Calcolatori; Sistemi Operativi; Programmazione orientata agli oggetti
Reti di Calcolatori; Sistemi Operativi; Programmazione orientata agli oggetti
Metodi didattici.
Lezioni in aula con esempi. Lezioni pratiche su calcolatori propri o del laboratorio.
Lezioni in aula con esempi. Lezioni pratiche su calcolatori propri o del laboratorio.
Modalità di verifica.
Progetto pratico da svolgere in uno dei linguaggi/middleware visti nel corso, in gruppi di due studenti, seguito da presentazione e esame orale. Vengono valutati correttezza e completezza della soluzione, adeguatezza delle scelte architetturali e progettuali, tempi di consegna, conoscenza generale del contenuto del corso.
Progetto pratico da svolgere in uno dei linguaggi/middleware visti nel corso, in gruppi di due studenti, seguito da presentazione e esame orale. Vengono valutati correttezza e completezza della soluzione, adeguatezza delle scelte architetturali e progettuali, tempi di consegna, conoscenza generale del contenuto del corso.
Altre informazioni.
Strumenti a supporto della didattica: lavagna, lucidi pdf, piattaforma Moodle elearning.uniud.it.
Strumenti a supporto della didattica: lavagna, lucidi pdf, piattaforma Moodle elearning.uniud.it.
OBIETTIVI FORMATIVI
Al termine del corso gli studenti potranno
Comprendere i modelli di progettazione dei sistemi distribuito.
Confrontare le varie strategie di implementazione possibili quando si progetta un sistema distribuito.
Conoscere i principali paradigmi di comunicazione, come RPC, RMI, code di messaggi, comunicazioni di gruppo, ecc.
Conoscere i principali middleware, come JGroups, CORBA, SOAP, Chord, ecc.
Comprendere e saper applicare gli algoritmi per risolvere i problemi comuni dei sistemi distribuiti, come rivelazione di guasti, la rilevazione del deadlock, le repliche, ecc
CONTENUTI
Scopo del corso è fornire allo studente i fondamenti e gli strumenti per l’analisi,la progettazione e l’implementazione dei sistemi distribuiti. A questo scopo, il corso è diviso in tre parti. Nella prima parte, si studiano gli aspetti sistemistico-architetturali dei sistemi distribuiti, analizzando vari modelli (client-server, multi-tier, peer-to-peer.). Nella seconda parte si studiano i modelli di comunicazione adottabili su questi sistemi distribuiti, e i corrispondenti middleware. In questa parte vengono introdotti alcuni linguaggi specifici per la programmazione dei sistemi distribuiti, in particolare Erlang e Jolie. Infine nella terza parte si affrontano i principali problemi che si presentano nella programmazione distribuita, come il rilevamento dei fallimenti, del deadlock, il raggiungimento del consenso, la gestione delle repliche; per ognuna di queste, si studieranno adeguate soluzioni algoritmiche e tecniche.
TESTI DI RIFERIMENTO
G. Coulouris, J. Dollimore, T. Kindberg, G. Blair, “Distributed systems: concepts and design”, 5 ed., International edition, Pearson, 2012.
In alternativa al precedente: A. Tanenbaum, M. Van Steen, “Sistemi distribuiti. Principi e paradigmi”, Pearson, 2007.
J. Armstrong, “Programming Erlang: Software for a Concurrent World”, The Pragmatic Programmers, 2007. ISBN: 978-1-93435-600-5
Appunti dalle lezioni