Sistemi operativi

A.A. 2023/2024
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 può essere seguito come corso singolo.

Programma e organizzazione didattica

Edizione unica

Responsabile
Periodo
Primo semestre

Programma
L'insegnamento 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. La frequenza non e' obbligatoria, ma fortemente consigliata.
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 dell'insegnamento: 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.
I risultati delle prove saranno comunicati per posta elettronica attraverso l'applicazione di Ateneo per la registrazione dei voti.
INF/01 - INFORMATICA - CFU: 12
Laboratori: 48 ore
Lezioni: 72 ore
Turni:
Docente: Piuri Vincenzo
Turno A (cognomi A-I)
Docente: Donida Labati Ruggero
Turno B (cognomi L-Z)
Docente: Damiani Andrea
Siti didattici
Docente/i
Ricevimento:
(su appuntamento - contattare via e-mail)
(su appuntamento - contattare via e-mail)
Ricevimento:
Su appuntamento via email