Studiare
In questa sezione è possibile reperire le informazioni riguardanti l'organizzazione pratica del corso, lo svolgimento delle attività didattiche, le opportunità formative e i contatti utili durante tutto il percorso di studi, fino al conseguimento del titolo finale.
Piano Didattico
Queste informazioni sono destinate esclusivamente agli studenti e alle studentesse già iscritti a questo corso.Se sei un nuovo studente interessato all'immatricolazione, trovi le informazioni sul percorso di studi alla pagina del corso:
Laurea in Informatica - Immatricolazione dal 2025/2026Il piano didattico è l'elenco degli insegnamenti e delle altre attività formative che devono essere sostenute nel corso della propria carriera universitaria.
Selezionare il piano didattico in base all'anno accademico di iscrizione.
1° Anno
Insegnamenti | Crediti | TAF | SSD |
---|
Analisi matematica I
Architettura degli elaboratori
2° Anno Attivato nell'A.A. 2023/2024
Insegnamenti | Crediti | TAF | SSD |
---|
3° Anno Attivato nell'A.A. 2024/2025
Insegnamenti | Crediti | TAF | SSD |
---|
Un insegnamento a scelta
Insegnamenti | Crediti | TAF | SSD |
---|
Analisi matematica I
Architettura degli elaboratori
Insegnamenti | Crediti | TAF | SSD |
---|
Insegnamenti | Crediti | TAF | SSD |
---|
Un insegnamento a scelta
Insegnamenti | Crediti | TAF | SSD |
---|
Legenda | Tipo Attività Formativa (TAF)
TAF (Tipologia Attività Formativa) Tutti gli insegnamenti e le attività sono classificate in diversi tipi di attività formativa, indicati da una lettera.
Sistemi operativi (2023/2024)
Codice insegnamento
4S00019
Crediti
12
Lingua di erogazione
Italiano
Settore Scientifico Disciplinare (SSD)
ING-INF/05 - SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
Corsi Singoli
Autorizzato
L'insegnamento è organizzato come segue:
Teoria
Laboratorio [Laboratorio 1]
Laboratorio [Laboratorio 2]
Obiettivi di apprendimento
Il corso si propone di fornire un'introduzione ai principi e al progetto dei sistemi operativi, con particolare riguardo ai concetti relativi alle architetture software di un sistema operativo, alla gestione e sincronizzazione dei processi e alla gestione delle risorse del sistema di calcolo. Al termine del corso lo studente dovrà dimostrare di avere - conoscenze e capacità di comprensione l'organizzazione interna, il funzionamento e i servizi di un sistema operativo. In particolare, avranno compreso: le principali funzionalità di un sistema operativo nei confronti di utenti e programmi applicativi; le strategie con cui il sistema operativo gestisce le risorse di un calcolatore; le tecniche impiegate per implementare le componenti in cui è suddiviso un sistema operativo. - capacità di applicare le conoscenze acquisite e capacità di comprensione per sviluppare programmi con la consapevolezza di come il sistema operativo gestisce i processi che ne derivano; sviluppare applicazioni che utilizzano le primitive (chiamate a funzioni di sistema) messe a disposizione dal sistema operativo; sviluppare e modificare componenti di un sistema operativo. Di saper valutare autonomamente vantaggi e svantaggi di differenti scelte progettuali nell'ambito dei servizi offerti da un sistema operativo; essere in grado di realizzare un progetto laboratoriale di gruppo e di presentarne i relativi risultati motivando le scelte effettuate con appropriatezza di linguaggio; saper sviluppare le competenze necessarie per proseguire lo studio nell'ambito dei sistemi operativi affrontando tematiche avanzate relative agli scenari dei sistemi distribuiti, real time ed embedded.
Prerequisiti e nozioni di base
- Architettura dei calcolatori
- Programmazione C
Programma
Teoria
------
Introduzione ai sistemi operativi.
Cronistoria dei sistemi di calcolo e dei sistemi operativi:
- da ENIAC fino ai sistemi distribuiti fine anni 80;
- da Internet fine anni 80 fino alla nuvola e ai sistemi mobili odierni.
Funzioni del sistema operativo: l'esempio di protezione della memoria con traduzione degl'indirizzi e modalita' nucleo-utente.
Multiprogrammazione, concorrenza e spazi d'indirizzamento.
Processi e flussi esecutivi ("threads") come meccanismi di gestione della protezione della memoria e della concorrenza.
Stati di un processo, code degli stati di un processo, cambiamenti di stato.
Esempio di gestione con la pila ("stack") delle chiamate a procedura.
Chiamate principali di sistema per gestire la creazione, esecuzione, interruzione, commutazione di contesto, duplicazione ("fork") e confluenza ("join"), terminazione di flussi esecutivi ("threads").
Eventi interni ed esterni per l'interruzione volontaria o la prelazione.
Interruzioni.
Gestione dei flussi esecutivi in modalita' sistema operativo oppure utente.
Multiprogrammazione.
Introduzione alla concorrenza.
Gestione di servizi di rete con gruppi di flussi esecutivi di servizio ("threaded web server").
Programmazione di servizi di rete di tipo ATM con gestione ad eventi.
Analisi di un esempio paradigmatico di agenti concorrenti rispetto a una sezione critica.
Il problema dell'attesa attiva.
Definizione di sezioni critiche mediante la disabilitazione/riabilitazione delle interruzioni.
Disabilitazione delle interruzioni durante la sezione critica o durante l'acquisizione e rilascio dei lucchetti.
Istruzioni macchina atomiche per lettura-modifica-scrittura e loro uso per definire sezioni critiche.
I semafori. Il problema produttori-consumatori con i semafori.
I monitor.
Gestione di una coda infinita con i monitor.
Il problema dei lettori-scrittori con i monitor.
Confronto tra monitor e semafori.
Gestione di una lista con l'istruzione atomica compare-and-swap.
Contesa sulle risorse e stallo.
Algoritmo per rilevare lo stallo.
Algoritmo del banchiere per evitare uno stallo.
Schedulazione di processi.
Algoritmi FIFO, RR, minimo tempo di completamento senza e con prelazione, lotteria.
Schedulazione con piu' code di priorita'.
Valutazione degli algoritmi di schedulazione.
Gestione della memoria principale.
Schemi di traduzione degl'indirizzi da virtuali a fisici:
rilocazione, segmentazione semplice, multi-segmentazione, impaginazione, multi-livello: segmentazione + impaginazione, impaginazione a due livelli, tavola inversa.
Ruolo del sistema operativo nella traduzione degl'indirizzi.
Formato di un elemento nella tavola delle pagine.
Introduzione al concetto di cache e gerarchia della memoria come gerarchia di cache a piu' livelli.
Cache a indirizzamento diretto, associativo a piu' vie, completamento associativo.
TLB come cache delle traduzioni degli indirizzi da virtuali a fisici.
Gestione dell'insuccesso nell'accesso a una TLB.
Organizzazione della TLB, e accesso in parallelo alla TLB e cache dei dati.
Memoria virtuale e impaginazione su richiesta.
Meccanismo dell'impaginazione su richiesta e gestione di una mancanza di pagina. Eccezioni trasparenti e precise.
Politiche di rimpiazzo della pagine: FIFO, MIN, LRU, casuale.
Anomalia di Belady.
Algoritmo dell'orologio e della seconda scelta.
Saturazione del sistema per il sovraccarico di accessi in memoria
("thrashing"). Insieme di lavoro.
Memoria secondaria Struttura logica e fisica dei dischi. Tempo di latenza. Schedulazione del disco: algoritmi FCFS, SSTF, SCAN, C-SCAN, LOOK, C-LOOK. Gestione della memoria di paginazione. Strutture RAID.
File System: Concetto di file, attributi e operazioni relative. Tipi di file. Accesso sequenziale e diretto. Concetto di directory. Struttura di directory. Protezioni nell'accesso a file. Attributi e modalità di accesso. Semantica della consistenza. Struttura di un file system. Montaggio di un file system. Metodi di allocazione dello spazio su disco: contiguo, concatenato, indicizzato. Gestione dello spazio libero su disco: tramite vettore di bit, tramite liste. Realizzazione delle directory: liste lineari, tabelle hash.
Sistema di Ingresso/Uscita (I/U): Sistemi di I/U, Componenti circuitali per I/U. Tecniche di I/U: programmato, con interruzione, con DMA. Device driver e interfaccia verso le applicazioni. Servizi del kernel per I/U: scheduling, buffering, caching, spooling.
Laboratorio:
------------
- Introduzione all'interprete dei comandi Bash di Unix/Linux
- Chiamate di sistema per il file system
- Chiamate di sistema per i processi
- Chiamate di sistema per i threads
- Chiamate di sistema per segnali e pipe
- Chiamate di sistema per fifo e code di messaggi
- Chiamate di sistema per semafori e per la memoria condivisa
- Gestione dei processi e della memoria in MentOS
Bibliografia
Modalità didattiche
La teoria sarà organizzata in lezioni frontali ed esercitazioni.
Il laboratorio, intercalato con le lezioni di teoria, sarà strutturato in lezioni frontali a cui seguiranno, di volta in volta, esercitazioni pratiche al calcolatore.
Modalità di verifica dell'apprendimento
L'esame è composto da due prove, una di teoria e una di laboratorio.
Teoria
---------
L'esame della parte di teoria consiste in una prova scritta, contenente domande a risposta aperta ed esercizi.
Laboratorio
-----------------
L'esame della parte di laboratorio consiste nello sviluppo e consegna di un progetto secondo le specifiche fornite dal docente. Il progetto sarà poi discusso in una prova orale che prevedera' anche la soluzione di esercizi di programmazione di sistema.
Criteri di valutazione
Comprensione dei principi fondamentali dei sistemi operativi, capacita' di esposizione verbale e scritta delle conoscenze acquisite, e loro applicazione alla risoluzione di problemi applicativi presentati sotto forma di esercizi, domande e progetti.
Criteri di composizione del voto finale
Il voto finale si ottiene come:
Voto_teoria*0,5 + Voto_laboratorio*0,5.
Si è inserito sotto Moodle un documento dettagliato con le modalità d'esame complete per teoria e laboratorio.
Lingua dell'esame
Italiano.
Materiale e documenti
-
Gestione dei processi (en, 1858 KB, 11/1/23)
-
Memoria (en, 2296 KB, 11/1/23)
-
Processi (en, 1048 KB, 10/19/23)
-
Sincronizzazione (en, 1109 KB, 11/1/23)
-
Storia dei sistemi informatici (en, 3134 KB, 11/1/23)
-
XX-TV Temi d'esame (it, 3877 KB, 2/5/24)
-
XX-TV Temi d'esame - avvertenze per l'uso (it, 5 KB, 2/5/24)