Sistemi operativi

A.A. 2020/2021
12
Crediti massimi
120
Ore totali
SSD
INF/01
Lingua
Italiano
Obiettivi formativi
L'insegnamento si propone di fornire le conoscenze sui fondamenti teorici, gli algoritmi e le tecnologie riguardanti l'architettura complessiva e la gestione del processore, della memoria centrale, dei dispositivi di ingresso/uscita, del file system, dell'interfaccia utente e degli ambienti distribuiti nei sistemi operativi per le principali tipologie di architetture di elaborazione.
Risultati apprendimento attesi
Comprensione di fondamenti teorici, algoritmi e tecnologie per la gestione del processore, della memoria centrale, dei dispositivi di ingresso/uscita, del file system, dell'interfaccia utente e degli ambienti distribuiti nei sistemi operativi.
Comprensione del funzionamento della gestione del processore, della memoria centrale, dei dispositivi di ingresso/uscita, del file system, dell'interfaccia utente e degli ambienti distribuiti nei sistemi operativi a supporto della realizzazione ottimale di applicazioni.
Comprensione delle opportunità di configurazione e della gestione del processore, della memoria centrale, dei dispositivi di ingresso/uscita, del file system, dell'interfaccia utente e degli ambienti distribuiti nei sistemi operativi.
Corso singolo

Questo insegnamento non può essere seguito come corso singolo. Puoi trovare gli insegnamenti disponibili consultando il catalogo corsi singoli.

Programma e organizzazione didattica

Edizione unica

Responsabile
Periodo
Secondo semestre
Il materiale didattico da utilizzare per lo studio e la preparazione all'esame e' quello del corso erogato in presenza.
I lucidi, le lezioni registrate e le attivita' di laboratorio registrate saranno messe a disposizione sulla piattaforma Ariel, nel sito dell'insegnamento.
Se le condizioni sanitarie lo consentiranno, le lezioni e le attivita' di laboratorio saranno erogate in presenza e registrate per fruizione asincrona. Se le infrastrutture tecnologiche delle aule utilizzate lo permetteranno, le attivita' didattiche erogate in presenza verranno rese fruibili anche in remoto in modo sincrono.
Altrimenti se le condizioni sanitarie non consentissero l'erogazione in presenza, l'insegnamento sara' erogato a distanza in modalita' sincrona utilizzando la piattaforma zoom: le attivita' verranno registrate per fruizione asincrona. Gli studenti interessati ad anticipare lo studio rispetto all'erogazione sincrona potranno utilizzare le registrazioni dell'anno precedente, che verranno mantenute disponibili sulla piattaforma Ariel dell'insegnamento.
Se le condizioni sanitarie non consentissero erogazione dell'esame in presenza, l'esame si svolgera' in remoto utilizzando la piattaforma exam.net per rispondere alle domande e la piattaforma zoom per la videosorveglianza, secondo le modalita' specificate nella guida pubblicata sul sito Ariel dell'insegnamento. I criteri di valutazione saranno quelli della prova in presenza.

Programma
Il corso analizza comparativamente architetture, funzionalità, meccanismi, politiche e gestione dei sistemi operativi relativamente alle varie strutture dei sistemi operativi stessi e alla gestione del processore, della memoria centrale, dei dispositivi di ingresso/uscita, del file system, dell'interfaccia utente e dei sistemi operativi distribuiti per le varie architetture dei sistemi di elaborazione (monoprocessore, multiprocessore, cluster, distribuiti, embedded) orientati alle principali aree applicative (sistemi transazionali, interattivi, gestionali, multimediali, d'automazione d'ufficio, per telecomunicazioni, di controllo industriale, robotici, embedded). Il corso approfondisce poi gli aspetti progettuali e di gestione dei sistemi operativi, con riferimento a tecniche di progettazione, configurazione, e ottimizzazione.

· Architetture dei sistemi operativi: tipi e struttura, funzioni caratteristiche, meccanismi e politiche di gestione.

· Virtualizzazione del processore: schedulazione di processi, allocazione, riallocazione statica e dinamica, pipelining, deadlock, starvation; meccanismi e politiche per la gestione concorrente, per la sincronizzazione e per la comunicazione tra processi; thread; aspetti di tempo reale; tolleranza ai guasti; progettazione di algoritmi e strutture dati per la virtualizzazione del processore.

· Virtualizzazione della memoria centrale: politiche e meccanismi di gestione della memoria centrale; supporti architetturali; consistenza; tolleranza ai guasti e agli errori software; sicurezza e protezione; progettazione di algoritmi e strutture dati per la virtualizzazione della memoria centrale.

· Virtualizzazione dei dispositivi di ingresso/uscita: meccanismi e politiche di gestione delle tipologie dispositivi e interfacciamento; orologio, ordinamento temporale degli eventi in sistemi distribuiti, coordinamento; dischi; terminali; stampanti; periferiche speciali, supporto di sistema operativo per reti informatiche; aspetti di tempo reale, tolleranza ai guasti e agli errori software, sicurezza e protezione; progettazione di algoritmi e strutture dati per la virtualizzazione del dei dispositivi di ingresso/uscita.

· Astrazione della rappresentazione delle risorse informative e fisiche: file, file system, file system di rete e distribuito, politiche di identificazione delle risorse; consistenza, caching, backup; tolleranza ai guasti e agli errori software; protezione e sicurezza degli accessi; progettazione di algoritmi e strutture dati per l'astrazione delle risorse.

· Interfaccia utente: tipi di interpreti e interfacce utente (programmativo, testuale, grafico, multimediale); meccanismi e politiche di gestione dell'interfaccia utente; gestione e sicurezza degli accessi; tolleranza ai guasti e agli errori software.

· Sistemi operativi per architetture distribuite: esecuzione di processi, sincronizzazione e comunicazione tra processi, gestione del deadlock, gestione delle periferiche, gestione del file system.

· Linux, Android, MS Windows
Prerequisiti
Sono richieste conoscenze relative a concetti di informatica di base, architettura degli elaboratori, e programmazione.
A seguito di regole stabilite dal Collegio Didattico è obbligatorio il superamento dell'esame di Programmazione.
Metodi didattici
Lezioni frontali in aula ed attivita' pratiche in laboratorio.
Materiale di riferimento
A. Silberschatz, G. Gagne, P.B. Galvin, Operating Systems Concepts, Wiley
o un libro simile che copra tutti gli argomenti

Slide e registrazioni delle lezioni saranno disponibili sul sito web del corso: https://vpiuriso.ariel.ctu.unimi.it/
Modalità di verifica dell’apprendimento e criteri di valutazione
L'esame consiste in due prove scritte volte ad accertare la preparazione e la comprensione della materia. Le due prove possono essere sostenute nello stesso appello o in appelli diversi. La prima prova riguarda le architetture dei sistemi operativi e la virtualizzazione del processore. La seconda prova riguarda la virtualizzazione della memoria centrale, la virtualizzazione dei dispositivi di ingresso/uscita, l'astrazione della rappresentazione delle risorse informative e fisiche, l'interfaccia utente, i sistemi operativi per architetture distribuite, Linux e Android. Ciascuna prova consiste in domande di teoria. La durata di ciascuna prova è 1:45h. La valutazione di ciascuna prova, espressa in trentesimi, terrà conto della correttezza, completezza e chiarezza espositiva delle risposte alle domande. Una prova non è sufficiente se una o più risposte non sono sufficienti. La valutazione complessiva dell'esame è la media delle valutazioni delle due prove, arrotondata all'intero immediatamente superiore. Durante ciascuna prova scritta non è consentito l'utilizzo di alcun materiale.
INF/01 - INFORMATICA - CFU: 12
Laboratori: 48 ore
Lezioni: 72 ore
Turni:
Docente: Piuri Vincenzo
Turno A
Docente: Donida Labati Ruggero
Turno B
Docente: Genovese Angelo
Docente/i
Ricevimento:
Su appuntamento via email
Ricevimento:
Su appuntamento via email
Ufficio 6002 (6 piano)