Dettaglio insegnamento

SISTEMI OPERATIVI

MF0365

Insegnamento
SISTEMI OPERATIVI
Codice
MF0365
Anno Accademico
2026/2027
Anno regolamento
2025/2026
Corso di studio
INFORMATICA
Curriculum
000 - CORSO GENERICO
Responsabile didattico
CFU
12
Ore di lezione
96
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa integrata
Fruizione insegnamento
OBB - Obbligatoria
Anno
2
Periodo
Secondo Semestre, Primo Semestre
Sede
ALESSANDRIA
Lingua insegnamento
Italiano
Contenuti
L’insegnamento integrato presenta i principi, i meccanismi e le principali scelte progettuali alla base dei sistemi operativi moderni. Il primo modulo affronta l’architettura generale del sistema operativo, la gestione di processi e thread, la sincronizzazione, la programmazione concorrente, i deadlock, la gestione della memoria e l’impiego delle chiamate di sistema Unix. Il secondo modulo approfondisce il sottosistema di input/output, i dispositivi di memorizzazione, lo scheduling del disco, i sistemi RAID, i driver di periferica e la progettazione e implementazione dei file system.

I contenuti teorici sono affiancati da esercizi, analisi di scenari, attività di programmazione e confronto tra soluzioni alternative, con particolare attenzione alla correttezza, alle prestazioni, all’affidabilità, alla complessità e all’impiego delle risorse.
Testi di riferimento
Testo principale: Andrew S. Tanenbaum, Herbert Bos, Modern Operating Systems: Global Edition, 5th edition, Pearson, 2023, ISBN 9781292459660.
Edizione italiana: Andrew S. Tanenbaum, Herbert Bos, I moderni sistemi operativi, 5a edizione, Pearson, 2023, ISBN 9788891931955.

Il testo è adatto allo studio sistematico dei principi, delle architetture, dei meccanismi e delle principali soluzioni progettuali trattate nei due moduli.

La piattaforma DIR mette inoltre a disposizione materiale integrativo, comprendente presentazioni, esempi, frammenti di codice, esercizi, attività di laboratorio e tracce di prove d’esame. Il libro di testo e i materiali teorici sono particolarmente indicati per la preparazione delle domande di conoscenza e comprensione; gli esercizi, gli esempi di programmazione e le tracce d’esame sono particolarmente utili per la preparazione delle domande applicative.
Obiettivi formativi
L’insegnamento integrato concorre agli obiettivi formativi del Corso di Studio in Informatica fornendo conoscenze e strumenti metodologici per comprendere, analizzare, utilizzare e progettare componenti software di sistema.

Al termine dell’insegnamento, la studentessa o lo studente dovrà essere in grado di:
1. descrivere e mettere in relazione l’architettura generale di un sistema operativo e i meccanismi impiegati per la gestione di processi, thread, memoria, input/output, dispositivi di memorizzazione e file;
2. utilizzare e analizzare chiamate di sistema e primitive di libreria Unix per la creazione, il coordinamento e la sincronizzazione di processi e thread;
3. analizzare i requisiti di uno scenario realistico e individuare meccanismi, politiche, algoritmi e strutture dati appropriati;
4. applicare metodi e tecniche per risolvere problemi relativi a concorrenza, sincronizzazione, deadlock, gestione della memoria, scheduling del disco, organizzazioni RAID, allocazione dei file e gestione dello spazio libero;
5. confrontare soluzioni alternative in termini di correttezza, prestazioni, affidabilità, complessità e impiego delle risorse;
6. motivare le scelte compiute e comunicarle con terminologia tecnica appropriata.

L’insegnamento integrato attribuisce complessivamente 12 CFU ed è articolato in due moduli da 6 CFU ciascuno. Le attività comprendono didattica erogativa, didattica interattiva, esercitazioni, attività di laboratorio e studio individuale.
Prerequisiti
Per affrontare proficuamente l’insegnamento è necessario possedere le conoscenze e le abilità acquisite negli insegnamenti di Architetture degli Elaboratori e Programmazione 1 e 2.

In particolare, è richiesto di saper:
- rappresentare dati e indirizzi in formato binario ed esadecimale;
- descrivere il funzionamento di CPU, memoria principale, bus, interrupt e accesso diretto alla memoria;
- comprendere il ruolo del set di istruzioni, dei livelli di privilegio e dell’interazione tra hardware e software;
- sviluppare, leggere e analizzare programmi nei linguaggi impiegati negli insegnamenti di programmazione;
- comprendere strutture dati fondamentali, puntatori, gestione dinamica della memoria e modularizzazione del codice;
- leggere semplici frammenti di codice e pseudocodice relativi a componenti di basso livello.

Per affrontare il secondo modulo è inoltre necessario possedere le conoscenze e le abilità maturate nel primo modulo, con particolare riferimento a processi, thread, concorrenza, sincronizzazione, gestione della memoria e chiamate di sistema.

Eventuali propedeuticità formali sono quelle previste dal Regolamento didattico del Corso di Studio.
Metodi didattici
L’insegnamento combina didattica erogativa e didattica interattiva nei due semestri.

La didattica erogativa comprende lezioni in presenza dedicate alla presentazione dei concetti fondamentali, delle architetture, delle strutture dati, degli algoritmi e delle principali alternative progettuali. Le spiegazioni sono corredate da esempi, schemi, frammenti di codice e confronti tra differenti soluzioni implementative.

La didattica interattiva comprende:

- esercizi quantitativi e metodologici svolti e discussi in aula;
- esercitazioni di programmazione basate su chiamate di sistema e primitive di libreria Unix;
- attività di laboratorio dedicate all’osservazione e all’uso di meccanismi del sistema operativo;
- analisi di scenari nei quali occorre individuare requisiti, formulare ipotesi e scegliere soluzioni progettuali;
- quesiti teorici e applicativi analoghi a quelli utilizzati nelle prove d’esame;
- momenti di confronto nei quali le studentesse e gli studenti sono invitati a motivare le proprie scelte e a valutare criticamente soluzioni alternative.

La piattaforma DIR mette a disposizione materiali coerenti con l’intero programma, utilizzabili anche da chi non frequenta. Le attività sono progettate per sviluppare conoscenza e comprensione, capacità applicative, autonomia di giudizio, capacità comunicative e capacità di apprendimento autonomo.
Altre informazioni
Tutte le informazioni necessarie per la preparazione delle prove sono contenute nella presente scheda, nelle schede dei due moduli e nei materiali resi disponibili sulla piattaforma DIR. Eventuali comunicazioni organizzative relative agli appelli sono pubblicate attraverso i canali istituzionali.

Le studentesse e gli studenti con disabilità o con Disturbi Specifici dell’Apprendimento (DSA) o con Bisogni Educativi Speciali (BES) possono richiedere servizi e strumenti specifici rivolgendosi allo Staff Sviluppo e Coordinamento Carriere e Servizi alle Studentesse e agli Studenti e consultando la pagina dedicata del sito di Ateneo:
https://uniupo.it/it/servizi/servizi-studentesse-e-studenti-condizione-di-disabilit%C3%A0-e-dsa

Dopo avere preso contatto con lo Staff di Ateneo, le studentesse e gli studenti con disabilità, DSA o BES possono contattare le docenti o i docenti titolari dei moduli per concordare la concreta applicazione delle misure previste con riferimento agli aspetti didattici e alle modalità di esame.
Modalità di verifica dell'apprendimento
L’apprendimento è verificato mediante due prove distinte, una per ciascun modulo, svolte secondo le modalità indicate nelle rispettive schede. Entrambe devono essere superate con una votazione almeno pari a 18/30.

Le prove comprendono quesiti teorici, metodologici e applicativi. Nel primo modulo possono includere esercizi di programmazione basati su chiamate di sistema e primitive Unix; nel secondo, domande ed esercizi su sottosistema di input/output, dispositivi di memorizzazione, driver e file system.

Nel complesso, le prove verificano:

* conoscenza e comprensione di concetti, architetture, strutture, algoritmi e meccanismi dei sistemi operativi;
* capacità di applicare le conoscenze mediante uso di chiamate di sistema, analisi di codice, calcoli, algoritmi, procedure e risoluzione di problemi;
* autonomia di giudizio nell’individuare informazioni rilevanti, formulare ipotesi, confrontare alternative e motivare le scelte;
* abilità comunicative nell’organizzare risposte chiare, rigorose e coerenti, con lessico tecnico appropriato;
* capacità di integrare concetti diversi e applicarli a quesiti non meramente ripetitivi.

La valutazione di ciascun modulo è espressa in trentesimi e considera:

1. correttezza delle conoscenze;
2. completezza delle risposte;
3. correttezza di procedimenti, calcoli, codice e metodi;
4. capacità di motivare le scelte e confrontare soluzioni;
5. chiarezza, organizzazione logica e proprietà terminologica.

Livelli di valutazione:

* 18-20/30: conoscenze essenziali complessivamente corrette e applicazione dei procedimenti fondamentali con errori non gravi;
* 21-23/30: conoscenze abbastanza complete, applicazione generalmente corretta e terminologia adeguata;
* 24-26/30: conoscenze solide, procedimenti corretti e motivazioni chiare;
* 27-29/30: conoscenze approfondite e integrate, autonomia di analisi ed elevata correttezza metodologica ed espositiva;
* 30/30 e 30 e lode: padronanza completa e critica, capacità di affrontare problemi complessi o non ripetitivi e argomentazione rigorosa e particolarmente chiara. La lode richiede piena correttezza, approfondimento, autonomia e qualità espositiva particolarmente elevati.

Una preparazione frammentaria, l’incapacità di applicare i procedimenti fondamentali o errori concettuali rilevanti comportano una valutazione insufficiente.

Il voto finale dell’insegnamento integrato è formulato dopo il superamento di entrambi i moduli ed è pari alla media aritmetica delle due votazioni. Se la media non è intera, è arrotondata all’intero più vicino: per difetto quando la parte decimale è inferiore a 0,5 e per eccesso quando è pari o superiore a 0,5.

L’eventuale lode è attribuita collegialmente dalle docenti e dai docenti dei due moduli in presenza di risultati eccellenti in entrambe le prove e di una media finale pari a 30/30 dopo l’arrotondamento.

Per la preparazione delle domande teoriche è indicato lo studio del libro di testo e dei materiali pubblicati sulla piattaforma DIR. Per le domande applicative sono particolarmente utili esercizi, esempi di programmazione, attività di laboratorio e tracce di prove d’esame disponibili sulla stessa piattaforma.
Programma esteso
MODULO 1 – SISTEMI OPERATIVI 1

1. Introduzione e architettura dei sistemi operativi
- Ruolo e finalità del sistema operativo.
- Architettura di un sistema operativo per elaboratori multiutente.
- Nucleo del sistema operativo.
- Interazione tra applicazioni, sistema operativo e hardware.

2. Processi e thread
- Concetto di processo e relativo stato.
- Creazione, terminazione e gestione dei processi.
- Concetto di thread e modelli multithread.
- Scheduling e principali criteri di gestione.

3. Sincronizzazione e programmazione concorrente
- Concorrenza e condizioni di competizione.
- Sezioni critiche e requisiti di correttezza.
- Primitive e meccanismi di sincronizzazione.
- Sincronizzazione di processi e thread.
- Problemi classici della programmazione concorrente.

4. Deadlock
- Condizioni necessarie per il deadlock.
- Prevenzione, elusione, rilevamento e recupero.
- Analisi di scenari e confronto tra strategie.

5. Gestione della memoria
- Spazi di indirizzamento e rilocazione.
- Allocazione della memoria.
- Paginazione e segmentazione.
- Memoria virtuale e principali politiche di gestione.

6. Processi e thread in Unix
- Generalità sull’uso delle chiamate di sistema Unix.
- Chiamate di sistema per la gestione dei processi.
- Librerie per la gestione dei thread.
- Chiamate di sistema e funzioni di libreria per la sincronizzazione.
- Analisi e sviluppo di semplici programmi concorrenti.

MODULO 2 – SISTEMI OPERATIVI 2

7. Architettura del sottosistema di input/output
- Ruolo e organizzazione del sottosistema di I/O.
- Interfaccia di I/O per le applicazioni e chiamate di sistema.
- Sottosistema di I/O del kernel.
- Interrupt, polling, buffering, caching, spooling e gestione degli errori.
- Criteri di confronto tra soluzioni progettuali alternative.

8. Dispositivi di memorizzazione e gestione del disco
- Struttura e caratteristiche dei dispositivi di memorizzazione.
- Organizzazione logica e fisica dei dischi.
- Tempi di accesso e metriche di prestazione.
- Politiche di disk scheduling e loro valutazione.
- Gestione delle unità a disco.
- Sistemi RAID: livelli principali, affidabilità, capacità e prestazioni.

9. Driver di periferica
- Ruolo e struttura di un driver.
- Interazione tra driver, kernel, controller e dispositivo.
- Gestione delle richieste, degli interrupt e degli errori.
- Organizzazione dei driver nel sistema operativo xv6.
- Analisi del driver IDE di xv6 come caso di studio.

10. Concetti e architettura dei file system
- Concetto di file e attributi dei file.
- Operazioni sui file e modalità di accesso.
- Directory, gerarchie di nomi e struttura del disco.
- Condivisione dei file e meccanismi di protezione.
- Struttura a livelli del file system.

11. Implementazione dei file system
- Implementazione di file e directory.
- Metodi di allocazione contigua, concatenata e indicizzata.
- Strutture di metadati e traduzione degli indirizzi logici in indirizzi fisici.
- Gestione dello spazio libero.
- Efficienza e prestazioni.
- Coerenza, affidabilità e recupero dopo un guasto.
- Backup e ripristino.

12. Attività applicative e confronto tra soluzioni
- Risoluzione guidata e autonoma di esercizi quantitativi, algoritmici e progettuali.
- Analisi di requisiti e scelta motivata di meccanismi e politiche.
- Confronto tra alternative in termini di correttezza, prestazioni, affidabilità, complessità e uso delle risorse.
- Discussione di quesiti analoghi a quelli delle prove d’esame.

Integrazione della dimensione di genere

Durante l’insegnamento si richiama l’attenzione sull’uso di un linguaggio tecnico inclusivo e sull’impatto che le scelte di progettazione del software di sistema possono avere sull’accessibilità e sull’inclusione delle diverse categorie di persone utilizzatrici.
Risultati di apprendimento attesi
Conoscenza e capacità di comprensione

Al termine dell’insegnamento integrato, la studentessa o lo studente dovrà conoscere e comprendere:

- il ruolo, l’architettura e le principali componenti di un sistema operativo;
- i modelli e i meccanismi per la gestione di processi, thread, concorrenza, sincronizzazione e deadlock;
- i principi e le politiche della gestione della memoria principale e virtuale;
- il ruolo e l’uso delle principali chiamate di sistema e primitive di libreria Unix;
- l’architettura del sottosistema di input/output e le modalità di interazione tra applicazioni, kernel, controller e periferiche;
- i principali parametri prestazionali dei dispositivi di memorizzazione e le politiche di scheduling del disco;
- la struttura, le responsabilità e il funzionamento dei driver di periferica;
- i principi, le strutture dati e gli algoritmi impiegati nella progettazione e nell’implementazione dei file system;
- vantaggi, limiti e ambiti di applicazione delle principali soluzioni alternative trattate.

Capacità di applicare conoscenza e comprensione

La studentessa o lo studente dovrà essere in grado di:

- analizzare e sviluppare semplici programmi che impiegano processi, thread, chiamate di sistema e primitive di sincronizzazione;
- riconoscere condizioni di competizione, problemi di sincronizzazione e situazioni di deadlock e individuare strategie appropriate;
- applicare algoritmi e politiche di gestione della memoria;
- risolvere esercizi relativi a tempi di accesso, scheduling del disco, organizzazioni RAID, allocazione dei file e gestione dello spazio libero;
- analizzare scenari realistici e scegliere soluzioni coerenti con i requisiti assegnati;
- descrivere il comportamento di componenti del sistema operativo mediante schemi, calcoli, codice, pseudocodice o argomentazioni tecniche;
- confrontare più soluzioni sulla base di correttezza, prestazioni, affidabilità, complessità e utilizzo delle risorse.

Autonomia di giudizio

La studentessa o lo studente dovrà saper individuare le informazioni rilevanti di un problema, formulare ipotesi esplicite, valutare criticamente soluzioni alternative e motivare la scelta ritenuta più adeguata.

Abilità comunicative

La studentessa o lo studente dovrà saper esporre per iscritto concetti, procedimenti, codice e scelte progettuali in modo chiaro, logicamente organizzato e tecnicamente corretto, utilizzando il lessico specialistico della disciplina.

Capacità di apprendimento

La studentessa o lo studente dovrà essere in grado di utilizzare il libro di testo, la documentazione tecnica e i materiali didattici per approfondire autonomamente meccanismi, componenti e soluzioni di sistemi operativi non esaminati direttamente durante l’insegnamento.

Livello minimo per il superamento

Per raggiungere il livello minimo di sufficienza, la studentessa o lo studente deve dimostrare di conoscere i concetti fondamentali di tutti i nuclei principali del programma, applicare correttamente i procedimenti standard, comprendere e utilizzare semplici chiamate di sistema, risolvere esercizi di base, motivare in modo essenziale le scelte compiute ed esporre le risposte con terminologia comprensibile e sostanzialmente corretta. Il livello minimo deve essere raggiunto separatamente in entrambi i moduli.

Livello avanzato

Un livello avanzato richiede una conoscenza ampia e integrata degli argomenti, la capacità di collegare componenti diverse del sistema operativo, analizzare autonomamente codice e scenari, affrontare problemi non identici a quelli esercitati, confrontare criticamente soluzioni alternative e produrre risposte rigorose, complete e ben organizzate.

Moduli

Anno corso 2
Codice MF0367
Insegnamento SISTEMI OPERATIVI: SISTEMI OPERATIVI 2
SSD INF/01
Sede ALESSANDRIA
Curriculum CORSO GENERICO
CFU 6
Anno corso 2
Codice MF0366
Insegnamento SISTEMI OPERATIVI: SISTEMI OPERATIVI 1
SSD INF/01
Sede ALESSANDRIA
Curriculum CORSO GENERICO
CFU 6
Ultimo aggiornamento:09-09-2026 00:14:31