Offerta Didattica
INFORMATICA
SISTEMI OPERATIVI
Classe di corso: L-31 - Scienze e tecnologie informatiche
AA: 2022/2023
Sedi: MESSINA
SSD | TAF | tipologia | frequenza | moduli |
---|---|---|---|---|
ING-INF/05 | Caratterizzante | Libera | Libera | No |
CFU | CFU LEZ | CFU LAB | CFU ESE | ORE | ORE LEZ | ORE LAB | ORE ESE |
---|---|---|---|---|---|---|---|
12 | 4 | 0 | 2 | 48 | 24 | 0 | 24 |
LegendaCFU: n. crediti dell’insegnamento CFU LEZ: n. cfu di lezione in aula CFU LAB: n. cfu di laboratorio CFU ESE: n. cfu di esercitazione FREQUENZA:Libera/Obbligatoria MODULI:SI - L'insegnamento prevede la suddivisione in moduli, NO - non sono previsti moduli ORE: n. ore programmate ORE LEZ: n. ore programmate di lezione in aula ORE LAB: n. ore programmate di laboratorio ORE ESE: n. ore programmate di esercitazione SSD:sigla del settore scientifico disciplinare dell’insegnamento TAF:sigla della tipologia di attività formativa TIPOLOGIA:LEZ - lezioni frontali, ESE - esercitazioni, LAB - laboratorio
Obiettivi Formativi
L'obiettivo principale del corso è l'acquisizione delle conoscenze di base sulla struttura dei moderni Sistema Operativoi"general purpose” mettendo in evidenza i meccanismi di basso livello che rendono possibile il funzionamento multiprogrammato, distribuito e virtualizzato.Learning Goals
The main objective of the course is to acquire basic knowledge on the structure of modern "general purpose" operating systems, highlighting the low-level mechanisms that make possible to have multi-programmed, distributed and virtualized activities.Metodi didattici
Teaching Methods
Prerequisiti
Conoscenze di programmazione C, e di algoritmi e strutture dati avanzate. Nozioni di architetture dei calcolatori.Prerequisites
Knowledge of C programming, advanced algorithms and data structures. Basic knowledge of computer architectures.Verifiche dell'apprendimento
Assessment
Programma del Corso
------------------------------------------------------------ Modulo: A000900 - SISTEMI DI VIRTUALIZZAZIONE ------------------------------------------------------------ Programma Cosa sono i sistemi operativi. Evoluzione dei sistemi operativi: sistemi operativi batch, sistemi operativi batch multiprogrammati, sistemi operativi time-sharing, sistemi operativi paralleli, sistemi operativi di rete, sistemi operativi clusterizzati, sistemi operativi distribuiti. Sistemi operativi real-time. Sistemi operativi moderni: virtualizzazione, Java Virtual Machine, benefici e caratteristiche. Emulazione vs. virtualizzazione. Hypervisor di tipo 0. Hypervisor di tipi 1. Hypervisor di tipo 2. Trap and Emulate. Binary Translation. Nested Page Tables. Hardware Assistance. Protection domains. Principles of Protection. Protection Rings. Protection Rings and Hypervisors. Intel Architecture with Negative Rings. Paravirtualization. Emulation. OS Component: CPU Scheduling, Memory Management, I/O, Storage Management, Live Migration. Macchine virtuali. Contesa delle risorse. CPU per le macchine virtuali: virtual CPUs multiple vs. vCPU single, Hyper-Threading. Memoria per le macchine virtuali. Ottimizzazione della memoria: Ballooning, Page Sharing, Compression. Storage nelle macchine virtuali: disk mirroring, disk striping, deduplication, thin provision, tiered storage. Network nelle macchine virtuali: virtual switch, bridged network, host-only network, network address translation, software-defined network. Come funzionano le macchine virtuali. Clonare una macchina virtuale. Template. Snapshot. Migrazione delle macchine virtuali: Cold migration, Warm migration, Live migration. OVF. VirtualBox: First Steps, Installation Details, Configuring Virtual Machines, Guest Additions, Virtual Storage, Virtual Networking, VBoxManage. Sistemi Unix/Linux. Shell. File System. Comandi Unix principali. Gestione degli utenti e gruppi. Permessi sui file. Gestione dei processi. Piping. Gestione dei device. RAID. Bash: commenti; variabili; input; if-then-else; case; for; while; until; select. Container. Perché usarli? Macchine virtuali vs. container. Docker Container. Docker Engine. Cosa sono le immagini. Come fare il build di una immagine. Dockerfile. Docker compose. Docker Registry. Architetture a microservizi. Cenni du Kubernetes. Cloud Computing. Caratteristiche essenziali del NIST. Modelli di servizio: Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Software as a Service (SaaS). Modelli di deployment: Cloud pubblico, Cloud privato, Cloud ibrido, Cloud federato. CloudOS nell'IaaS. Nuovi modelli di business legati al Cloud. Vantaggi e svantaggi. Open Stack. Fiware. Cenni di Continuous Integration / Continuous Delivery. ------------------------------------------------------------ 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 SISTEMI OPERATIVI: 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 ------------------------------------------------------------ Programma Cosa sono i sistemi operativi. Evoluzione dei sistemi operativi: sistemi operativi batch, sistemi operativi batch multiprogrammati, sistemi operativi time-sharing, sistemi operativi paralleli, sistemi operativi di rete, sistemi operativi clusterizzati, sistemi operativi distribuiti. Sistemi operativi real-time. Sistemi operativi moderni: virtualizzazione, Java Virtual Machine, benefici e caratteristiche. Emulazione vs. virtualizzazione. Hypervisor di tipo 0. Hypervisor di tipi 1. Hypervisor di tipo 2. Trap and Emulate. Binary Translation. Nested Page Tables. Hardware Assistance. Protection domains. Principles of Protection. Protection Rings. Protection Rings and Hypervisors. Intel Architecture with Negative Rings. Paravirtualization. Emulation. OS Component: CPU Scheduling, Memory Management, I/O, Storage Management, Live Migration. Macchine virtuali. Contesa delle risorse. CPU per le macchine virtuali: virtual CPUs multiple vs. vCPU single, Hyper-Threading. Memoria per le macchine virtuali. Ottimizzazione della memoria: Ballooning, Page Sharing, Compression. Storage nelle macchine virtuali: disk mirroring, disk striping, deduplication, thin provision, tiered storage. Network nelle macchine virtuali: virtual switch, bridged network, host-only network, network address translation, software-defined network. Come funzionano le macchine virtuali. Clonare una macchina virtuale. Template. Snapshot. Migrazione delle macchine virtuali: Cold migration, Warm migration, Live migration. OVF. VirtualBox: First Steps, Installation Details, Configuring Virtual Machines, Guest Additions, Virtual Storage, Virtual Networking, VBoxManage. Sistemi Unix/Linux. Shell. File System. Comandi Unix principali. Gestione degli utenti e gruppi. Permessi sui file. Gestione dei processi. Piping. Gestione dei device. RAID. Bash: commenti; variabili; input; if-then-else; case; for; while; until; select. Container. Perché usarli? Macchine virtuali vs. container. Docker Container. Docker Engine. Cosa sono le immagini. Come fare il build di una immagine. Dockerfile. Docker compose. Docker Registry. Architetture a microservizi. Cenni du Kubernetes. Cloud Computing. Caratteristiche essenziali del NIST. Modelli di servizio: Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Software as a Service (SaaS). Modelli di deployment: Cloud pubblico, Cloud privato, Cloud ibrido, Cloud federato. CloudOS nell'IaaS. Nuovi modelli di business legati al Cloud. Vantaggi e svantaggi. Open Stack. Fiware. Cenni di Continuous Integration / Continuous Delivery. ------------------------------------------------------------ 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.Testi di riferimento: ------------------------------------------------------------
Modulo: A000900 - SISTEMI DI VIRTUALIZZAZIONE
------------------------------------------------------------
Il contenuto proviene da testi di riferimento in lingua italiana e inglese, pubblicazioni e appunti del docente rilasciati su piattaforma moodle.
1) Abraham Silberschatz, Peter Baer Galvin, Greg Gagne, Riccardo Melen, Pietro Codara, "Sistemi operativi. Concetti ed esempi.", 10° edizione, Pearson, ISBN-10: 8891904554
2) Matthew Portnoy, "Virtualization Essentials", Second Edition, Sybex
3) Serena Sensini, "Docker: Sviluppare e rilasciare software tramite container", Apogeo, ISBN-10: 8850335407
------------------------------------------------------------
Modulo: A000901 - SISTEMI OPERATIVI
------------------------------------------------------------
A.Silberschatz, P.B.Galvin, G.Gagne, "Sistemi operativi. Concetti ed esempi", Pearson/Addison Wesley
Mark Mitchell, Jeffrey Oldham, Alex Samul, "Advanced Linux Programming" (https://richard.esplins.org/static/downloads/linux_book.pdf)
Esami: Elenco degli appelli
Elenco delle unità didattiche costituenti l'insegnamento
Docente: MARCO LUCIO SCARPA
Orario di Ricevimento - MARCO LUCIO SCARPA
Giorno | Ora inizio | Ora fine | Luogo |
---|---|---|---|
Martedì | 09:30 | 11:30 | Dipartimento di Ingegneria, Blocco B, piano 7. |
Giovedì | 09:30 | 11:30 | Dipartimento di Ingengeria, Blocco B, piano 7. |
Note: