Programma del Corso
------------------------------------------------------------
Modulo: A000900 - SISTEMI DI VIRTUALIZZAZIONE
------------------------------------------------------------
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.
------------------------------------------------------------
Modulo: A000901 - SISTEMI OPERATIVI
------------------------------------------------------------
GENERALITA’ SUI SISTEMI OPERATIVI: sistemi monolitici, sistemi a livelli, macchine virtuali, sistemi distribuiti client-server. Definizione di Processo, Memoria Virtuale, File System, System Call, Kernel, Shell.
EVOLUZIONE DEI SISTEMIOPERATIVI: dalla mono alla multiprogrammazione; il concetto di multitasking.
MODELLO DI INTERAZIONE TRA CPU E DISPOSITIVI: Sistema di interruzione. Interruzioni e multiprogrammazione. Processo di interruzione. Modi di funzionamento della CPU.
GESTIONE DEI PROCESSI: modello di un processo, vita di un processo, meccanismi di controllo. La Schedulazione a breve termine (di CPU), la Schedulazione a medio termine (swapping), La Schedulazione a lungo termine (dei processi): algoritmi di schedulazione (senza prelazione, con prelazione, Round Robin, con priorità, code multiple, SJF).
SINCRONIZZAZIONE TRA PROCESSI: corse critiche, mutua esclusione, sospensione e risveglio, stallo, meccanismi di condivisione della memoria e scambio messaggi. Meccanismi di sincronizzazione tra processi: semafori. La Comunicazione Inter-Processo (IPC) e i suoi problemi: esempio del produttore-consumatore. La Gestione dei Processi e IPC in ambiente distribuito (accenni). I Threads: definizione, sistemi operativi multi-threaded, rapporto tra threads e processi.
GESTIONE DELLA MEMORIA: partizionamento fisso, rilocazione e protezione; gestore con swapping: multiprogrammazione a partizioni variabili, squeeze (compattamento).
MEMORIA VIRTUALE: definizione di spazio di indirizzamento virtuale, MMU, overlay e paginazione, Virtual Page Table a uno o più livelli. Segmentazione.
GESTIONE DEI FILE: il file system (struttura gerarchica in file e directory, tipi di file system). Implementazione del file system: struttura del file system, implmentazione delle directory,metodi di allocazione, gestione dello spazio libero.
LABORATORIO: La gestione dei processi. La libreria pthread. Gestione dei thread, mutex, semafori. Programmazione concorrente.
Course Syllabus
------------------------------------------------------------
Modulo: A000900 - SISTEMI DI VIRTUALIZZAZIONE
------------------------------------------------------------
I/O systems: I/O hardware, memory-mapped I/O; techniques for I/O device management: program control, Polling, I/O interrupt driven and Direct Memory Access; application I/O interface, kernel I/O subsystem; Loadable kernel module (LKM), Linux I/O, /dev and /proc directories. Mass storage: structure of memory devices, programming of hard disks and NVM devices, error detection and correction; connection of the devices: host attached storage, network-attached storage, cloud storage, storage area network, storage array; mirroring, striping, RAID structures, Multiple Device Administrator (mdadm) tool. Networks and distributed systems: network and distributed operating systems; distributed file systems: Network File System (NFS), Google File System (GFS) and Hadoop File System (HDFS). Virtual machines: trap and emulate, binary translation, hardware assistance; types of virtualization: hypervisor, paravirtualization, virtualization of the programming environment, emulation. Managing CPU, Memory, Storage and additional devices for a VM. Understanding applications in a VM. Comparing Hypervisors, VMware, ESX, CitrixXen, Microsoft Hyper-V , Other Solutions. VM migration, Cold and Live migration, pre-copy and post-copy. Difference between Containers and Virtual Machines, VM Orchestration. Container engine. Monolithic and microservice oriented applications. Cloud computing, service levels: IaaS, PaaS and SaaS; public, private and hybrid clouds; Windows Azure, Google App Engine, Amazon Web Services; Cloud operating system, vertical and horizontal scalability. Architectural components of an IaaS, Distributed Management of Virtual Infrastructures, Scheduling Techniques for Advance Reservation of Capacity, Capacity Management to meet SLA Commitments. Openstack. The Cloud Supply Chain. the Integration Methodologies, a framework of SensorâCloud Integration.
------------------------------------------------------------
Modulo: A000901 - SISTEMI OPERATIVI
------------------------------------------------------------
OVERVIEW ON OPERATING SYSTEMS: architectures, virtual machines, distributed systems, client-server paradigm. Process definition, virtual memory, File System, System Call, Kernel, Shell.
OPERATING SYSTEM EVOLUTION: from mono-programming to multi-programming; basics on multitasking.
CPU-DEVICES INTERACTION MODEL: Interrupts. Interrupts and multi-programming. CPU running modes.
PROCESS MANAGEMENT: process model, process control mechanisms. Short term scheduling, medium term scheduling, long term scheduling: scheduling algorithms.
PROCESS SYNCHRONIZATION: the critical section problem, the mutual exclusion, sleep and wake up, deadlock, shared memory, message exchange. Semaphores. Threads: multithreading models, threads and processes.
MEMORY MANAGEMENT: contiguous memory allocation, memory relocation and protection; swapping; variable partitions allocation, squeeze. Pagination. Segmentation.
VIRTUAL MEMORY: demand paging, page replacement, thrashing.
STORAGE MANAGEMENT: file-system interface, file system implementation: file system structure, directory implementation, allocation methods, free space management.
PRACTICAL ACTIVITY: Process management. The pthread library. Thread management, mutex, semaphores. Concurrent programming.