L'obiettivo principale del corso è l'acquisizione delle conoscenze di base dei moderni sistemi informatici, anche distribuiti, basati su tecniche di virtualizzazione e paravirtualizzazione. Saranno fornite competenze sull’uso di tecniche e strumenti per il progetto, la gestione ed il monitoraggio di centri di elaborazione dati e server virtualizzati, e di sistemi di elaborazione distribuiti ed orientati al Cloud computing.
Prerequisiti
Conoscenze di programmazione C, e di algoritmi e strutture dati avanzate. Nozioni di architetture dei calcolatori.
Testi
A.Silberschatz, P.B.Galvin, G.Gagne, Operating System Concepts, Matthew Portnoy, Virtualization Essentials, 2nd Edition, John Wiley & Sons.
Rajkumar Buyya, James Broberg , Andrzej M. Goscinski. CLOUD COMPUTING Principles and Paradigms, Wiley.
Contenuti
Sistemi di I/O: Hardware di I/O, I/O memory mapped; tecniche per la gestione dei dispositivi di I/O: a controllo di programma, Polling, I/O interrupt driven e Direct Memory Access; interfaccia di I/O delle applicazioni, sottosistema I/O del kernel; Loadable Kernel Module (LKM), Linux I/O, directory /dev e /proc. Memoria di massa: struttura dei dispositivi di memorizzazione, scheduling dei dischi rigidi e di dispositivi NVM, rilevamento e correzione degli errori; connessione dei dispositivi di memorizzazione: host attached storage, network-attached storage, cloud storage, storage area network, storage array; mirroring, striping, strutture RAID, Multiple Device Administrator (mdadm) tool. Reti e sistemi distribuiti: sistemi operativi di rete e distribuiti; file system distribuiti: Network File System (NFS),Google File System (GFS) e Hadoop File System (HDFS). Macchine virtuali: trap and emulate, traduzione binaria, assistenza hardware; tipologie di virtualizzazione: hypervisor, paravirtualizzazione, virtualizzazione dell'ambiente di programmazione, emulazione. Gestione di CPU, memoria, archiviazione e dispositivi aggiuntivi per una VM. Comprensione delle applicazioni in una VM. Confronto tra hypervisor, VMware ESX, CitrixXen, Microsoft Hyper-V, altre soluzioni. Migrazione delle VM, Migrazione Cold e Live, pre-copy e post-copy. Differenza tra Container e Macchine Virtuali, Orchestrazione di VM. Container engine. Applicazioni monolitiche e orientate ai microservizi. Cloud computing, livelli di servizi: IaaS, PaaS e SaaS; Cloud pubbliche, private e ibride; Windows Azure, Google App Engine, Amazon Web Services; Cloud Operating System, scalabilità verticale ed orizzontale. Componenti architetturali di un IaaS, gestione distribuita delle infrastrutture virtuali, tecniche di schedulazione per la prenotazione anticipata di capacità, gestione della capacità per soddisfare i requisiti di SLA. Openstack. La Supply Chain Cloud, le metodologie di integrazione, un framework di integrazione sensore-cloud.