Laurea Triennale in Informatica · Sapienza Università di Roma

Sistemi Operativi

Anno Accademico 2026/27 — I Canale (9 CFU)
Il corso introduce i sistemi operativi come componente essenziale di ogni sistema di calcolo e come esempio paradigmatico del concetto di astrazione. L'obiettivo primario è comprendere come il processo di virtualizzazione delle risorse fisiche permetta di gestire la complessità hardware, offrendo un ambiente semplificato per lo sviluppo del software applicativo.

INIZIO DEL CORSO: La prima lezione del corso si svolgerà mercoledì 23 settembre.

Orario delle Lezioni

Martedì

15:00 – 18:00

Mercoledì

16:00 – 18:00

Giovedì

13:00 – 15:00

Aula 4 — Via De Lollis (RM158) — accesso dai laboratori di Via Tiburtina 205.

Google Classroom

L'iscrizione al Google Classroom del corso è obbligatoria per rimanere aggiornati su tutto ciò che riguarda il corso.

Iscriviti al Classroom

Contatti Docente

Ufficio Stanza 106, I piano, Edificio E — Viale Regina Elena 295
Ricevimento Su appuntamento via email

Usare sempre il seguente pattern nell'oggetto delle email:

[SO 2026/27]: <OGGETTO>

Obiettivi Formativi

Astrazione Virtualizzazione

Il corso introduce i sistemi operativi come componente essenziale di ogni sistema di calcolo e come esempio paradigmatico del concetto di astrazione. L'obiettivo primario è comprendere come il processo di virtualizzazione delle risorse fisiche permetta di gestire la complessità hardware, offrendo un ambiente semplificato per lo sviluppo del software applicativo.

Prerequisiti

Richiesti

  • ▸ Programmazione imperativa (C/C++, Java, Python)
  • ▸ Algoritmi e strutture dati

Consigliati

  • ▸ Architettura dei calcolatori
  • ▸ Linguaggio C
  • ↳ forniti dal corso ove necessario

Contenuti del Corso — 5 Moduli

1. Fondamenti — architettura di base, interfaccia HW/SW (interrupt, syscall), basi del linguaggio C.
2. Virtualizzazione — astrazione della CPU (processi e scheduling) e della memoria (spazio di indirizzamento, paging).
3. Concorrenza — thread, sincronizzazione, lock e gestione dei deadlock.
4. Persistenza — dispositivi di I/O, hard disk/SSD, architettura del file system.
5. Argomenti Avanzati — sicurezza, virtualizzazione moderna (VM/container), sistemi distribuiti, SO mobile.

Testi di Riferimento

Testo principale

Operating Systems: Three Easy Pieces — Arpaci-Dusseau & Arpaci-Dusseau

Disponibile gratuitamente online.

The C Programming Language — Kernighan & Ritchie — riferimento per il linguaggio C.
Testi alternativi (anche in italiano): Operating Systems Concepts (Silberschatz et al.), Modern Operating Systems (Tanenbaum et al.) — materiale aggiuntivo fornito dal docente.

Modalità d'Esame

Scritto — obbligatorio

48 domande 30 minuti max 24 punti
Risposta Punteggio
Corretta +2
Non data 0
Errata −1

Il punteggio grezzo S ∈ [−48, 96] è convertito linearmente in voto V(S):

V(S) = INS                        se S < T
V(S) = 18 + 6 ⋅ (S−T) / (96−T)    se S ≥ T

dove T è la soglia minima (es. T = 42). Voto minimo per l'accesso all'orale: V(S) = 18.

Orale — facoltativo

accesso con voto scritto ≥ 18 variazione ±8 punti
Prestazione Effetto
Eccellente fino a +8  (lode)
Sufficiente conferma voto scritto
Insufficiente fino a −8

Parte I — FONDAMENTALI

Lezione 1.1 23/09/2026-24/09/2026

Fondamenti I. Architettura del calcolatore: CPU, memoria, I/O.

Lezione 1.2 25/09/2026-29/09/2026

Fondamenti II. Introduzione ai SO: storia, astrazione, obiettivi; supporto hardware: interrupt, syscall, DMA, modalità utente/kernel.

Lezione 1.3 30/09/2026

Fondamenti III. Programmazione in C: tipi primitivi, array, puntatori, memoria (stack, heap).

Lezione 1.4 01/10/2026

Fondamenti IV. Programmazione in C: compilatore, linker, assembler.

Parte II — VIRTUALIZZAZIONE

Lezione 2.1 06/10/2026-07/10/2026

Virtualizzazione I (CPU). Processi e API: fork, exec, wait, ecc.

Lezione 2.2 07/10/2026-08/10/2026

Virtualizzazione II (CPU). Scheduling della CPU: politiche di base (FIFO, RR, SJF, STCF).

Lezione 2.3 13/10/2026

Virtualizzazione IV (CPU). Scheduling della CPU: MLFQ, Lottery/Stride, Linux CFS.

Lezione 2.4 14/10/2026

Virtualizzazione IV (Memoria). Spazio di indirizzamento, Rilocazione statica e dinamica (Base/Bounds).

Lezione 2.5 20/10/2026

Virtualizzazione V (Memoria). Segmentazione e introduzione al paging.

Lezione 2.6 21/10/2026

Virtualizzazione VI (Memoria). Accelerazione tramite TLB e paging multilivello.

Lezione 2.7 22/10/2026

Virtualizzazione VII (Memoria). Swapping: meccanismi e politiche (LRU/Clock).

Parte III — CONCORRENZA

Lezione 3.2 05/11/2026

Concorrenza II. Lock: test-and-set, CAS, spinlock.

Lezione 3.3 10/11/2026

Concorrenza III. Variabili di condizione (condition variables).

Parte IV — PERSISTENZA

Parte V — ARGOMENTI AVANZATI

Materiale e comunicazioni relativi alle precedenti edizioni del corso.