mail unicampaniaunicampania webcerca

    Rocco AVERSA

    Insegnamento di SISTEMI DISTRIBUITI

    Corso di laurea magistrale in INGEGNERIA INFORMATICA

    SSD: ING-INF/05

    CFU: 9,00

    ORE PER UNITÀ DIDATTICA: 72,00

    Periodo di Erogazione: Primo Semestre

    Italiano

    Lingua di insegnamento

    Italiano

    Contenuti

    L’insegnamento si propone come obiettivo formativo quello di fornire all’allievo una conoscenza dettagliata delle problematiche generali relative all’architettura dei sistemi distribuiti, nonché l’acquisizione dei principali strumenti metodologici per lo sviluppo di software efficiente per sistemi distribuiti e paralleli. Alla fine del corso, anche grazie alla parte esercitativa, l’allievo dovrà acquisire la capacità di utilizzare in maniera operativa le principali metodologie di sviluppo e le piattaforme più utilizzate per la programmazione di sistemi distribuiti e paralleli.

    Testi di riferimento

    A.S. Tanenbaum, M. van Steen: Distributed Systems, Prentice Hall, Seconda edizione

    Obiettivi formativi

    L’insegnamento ha come obiettivo lo studio delle problematiche generali relative all’architettura dei sistemi distribuiti. Il modulo, in particolare, dopo la classificazione delle differenti architetture hardware di un sistema distribuito, affronta le principali tecniche per lo sviluppo di software efficiente per sistemi distribuiti e paralleli approfondendo i modelli di interazione, i paradigmi di programmazione concorrenti e le problematiche di coordinazione distribuita. Nella parte esercitativa del corso verranno presentate le principali metodologie di sviluppo e le piattaforme più utilizzate per la programmazione di sistemi distribuiti e paralleli.

    Prerequisiti

    Il corso presuppone che l’allievo abbia padronanza dei concetti avanzati relativi all’architettura hardware dei calcolatori, alle tecniche di progettazione e programmazione sia di tipo procedurale che orientata agli oggetti, nonché una buona conoscenza delle principali problematiche delle reti e dei sistemi web.Propedeuticità: ARCHITETTURA DEI CALCOLATORI;

    Metodologie didattiche

    Lezioni frontali, esercitazioni assistite

    Metodi di valutazione

    Esame scritto e orale con eventuale discussione di elaborati progettuali individuali o di gruppo

    Altre informazioni

    Materiale didattico aggiuntivo sarà disponibile sul sito del corso a cura del docente

    Programma del corso

    Concetti introduttivi: Introduzione ai sistemi distribuiti; Classificazione delle architetture hardware/software.Comunicazione e Processi: modelli di interazione(client-sever, multithreading, agenti mobili); meccanismi di comunicazione (Remote Procedure Call, Remote Object Invocation, memoria condivisa, scambio messaggi)Ambienti di programmazione distribuita: a scambio messaggi (PVM e MPI); shared memory (OpenMP); agenti mobili (Piattaforma Jade).Problematiche di Naming:entità di naming; localizzazione di entità mobili; l’esempio DNS (Domain Name System)Sincronizzazione: problematiche legate alla sincronizzazione e alla gestione dello stato globale di un sistema distribuito; algoritmi di sincronizzazione di clock fisici e logici; algoritmi di elezione; gestione distribuita della mutua esclusione;gestione della concorrenza in un sistema transazionale distribuito.Consistenza e replicazione: modelli di consistenza; protocolli di distribuzione e consistenzaVirtualizzazione e Cloud Computing: Sistemi di Virtualizzazione; Virtualizzazione e Para-Virtualizzazione;Architettura Cloud, IaaS, PaaS, SaaS;

    English

    Teaching language

    Italian

    Contents

    The aim of the course is to provide the student with a exhaustive knowledge of the general issues related to the architecture of distributed systems, as well as the acquisition of the main methodological tools for the development of well-organized software for distributed and parallel systems. At the end of the course, also thanks to the training part, the student will acquire the ability to use the main development methodologies and the most used platforms for the programming of distributed and parallel systems.

    Textbook and course materials

    A.S. Tanenbaum, M. van Steen: Distributed Systems, Prentice Hall, Second edition

    Course objectives

    The aim of the teaching is to study the general issues related to the architecture of distributed systems. The module, after classifying the different hardware architectures of a distributed system, addresses the main techniques for developing efficient software for distributed and parallel systems by illustrating the main interaction models, concurrent programming paradigms, and distributed coordination issues.

    Prerequisites

    The course attendance assumes a good knowledge of main concepts relating to computer hardware architecture, procedural and object-oriented design and programming techniques as well as a good understanding of the main issues of network and web systems .Propaedeutic: ARCHITETTURA DEI CALCOLATORI

    Teaching methods

    Lectures, assisted exercises

    Evaluation methods

    Written and oral examination with possible discussion of individual or group project works

    Other information

    Additional learning material are made available by the teacher on the web site of the course

    Course Syllabus

    Communication and processes: interaction models (client-sever, multithreading, mobile agents); synchronization and communication mechanisms (Remote Procedure Call, Remote Object Invocation, shared memory, message passing)Distributed programming paradigms and environments: message-passing (PVM e MPI); shared memory (OpenMP); mobile agents (Jade).Naming: naming entities; techniques of flat naming (Home-Based Approaches, Distributed Hash Tables, Hierarchical Approaches); techniques of structured naming (Name Spaces, Name Resolution). An example: The Domain Name System Synchronization: Clock Synchronization Algorithms; Lamport’s Logical and Vector Clocks; Algorithms for distributed mutual exclusion and election problems. The isolation problem in transactional distributed systems.Consistency, replication and fault tolerance: Data-centric and client-centric consistency models. Consistency protocols. Fault tolerance basic concepts and methodologies. Virtualization e Cloud Computing: Virtualization techniques Cloud, IaaS, PaaS, SaaS;

    facebook logoinstagram buttonyoutube logotype