OPERATING SYSTEMS

Anno accademico
2025/2026 Programmi anni precedenti
Titolo corso in inglese
OPERATING SYSTEMS
Codice insegnamento
CT0670 (AF:608610 AR:301152)
Lingua di insegnamento
Inglese
Modalità
In presenza
Crediti formativi universitari
6
Livello laurea
Laurea
Settore scientifico disciplinare
ING-INF/05
Periodo
I Semestre
Anno corso
2
Sede
VENEZIA
Spazio Moodle
Link allo spazio del corso
L'insegnamento di Sistemi Operativi si colloca al secondo anno del corso di studi dopo che gli studenti hanno studiato programmazione e architetture degli elaboratori. A partire da queste conoscenze, va a costituire conoscenze e competenze su come il software interagisce con la piattaforma hardware grazie al sistema operativo.
Contribuisce a raggiungere i seguenti obiettiv del CdS:
Conoscenza e comprensione
- comprensione dei concetti di base e conoscenza delle tecniche di realizzazione dei componenti dei sistemi operativi moderni, con particolare enfasi sugli aspetti di sicurezza;
- conoscenza della programmazione concorrente;
- conoscenza dei formalismi principali per la modellazione dei sistemi informatici.
Capacità di applicare conoscenza e comprensione
- sa utilizzare la programmazione concorrente per risolvere problemi di calcolo parallelo
Al termine di questo corso, gli studenti saranno in grado di:

1. Comprendere il ruolo e le funzioni di un sistema operativo: Riconoscere i componenti chiave di un sistema operativo e le loro interazioni con hardware e software.
2. Applicare i concetti di gestione dei processi: Comprendere e implementare la pianificazione dei processi, la comunicazione tra processi e la gestione dei thread.
3. Spiegare le tecniche di gestione della memoria: Descrivere la memoria virtuale, il paging, la segmentazione e le strategie di allocazione della memoria.
4. Comprendere le operazioni del file system: Capire le strutture del file system, i metodi di allocazione dei file e la gestione dello storage.
5. Utilizzare efficacemente gli strumenti del sistema operativo: Applicare gli strumenti e i comandi del sistema operativo per compiti di gestione del sistema, inclusi la gestione dei file, il controllo dei processi e il monitoraggio del sistema.
6. Confrontare i diversi sistemi operativi: Analizzare le somiglianze e le differenze tra i sistemi operativi moderni come Linux, Windows e macOS.
Conoscenza di base dell'architettura del computer e dell'hardware (CPU, memoria, storage).
Familiarità con i linguaggi di programmazione di alto livello (preferibilmente C o Python).
Comprensione delle strutture dati fondamentali (array, liste collegate, stack, code).
Introduzione ai Sistemi Operativi

Funzioni e tipi di sistemi operativi
Panoramica sull'architettura e i componenti del sistema operativo
Evoluzione e sviluppo storico dei sistemi operativi
Gestione dei Processi

Definizione di processi e blocco di controllo del processo (PCB)
Stati dei processi e algoritmi di pianificazione dei processi (FIFO, Round Robin, SJF)
Comunicazione tra processi (IPC)
Thread e Concorrenza

Differenza tra processi e thread
Sincronizzazione: Mutex, semafori e variabili di condizione
Rilevamento e prevenzione del deadlock
Gestione della Memoria

Gerarchia e struttura della memoria (memoria logica vs. fisica)
Tecniche di paging e segmentazione
Memoria virtuale e algoritmi di sostituzione delle pagine
Metodi di allocazione della memoria: Contigui, sistema buddy e paging
File System

Struttura del file system: Directory, metadati e allocazione dei file
Algoritmi di pianificazione dei dischi
Gestione del file system e tecniche di archiviazione
Sicurezza del file system
Sistemi I/O e Gestione dei Dispositivi

Dispositivi I/O, driver di dispositivi e gestione degli interrupt
Buffering, spooling e accesso diretto alla memoria (DMA)
Algoritmi di pianificazione dei dischi e dei dispositivi
Sicurezza e Protezione

Concetti di sicurezza: Riservatezza, integrità e disponibilità
Autenticazione dell'utente e controllo dell'accesso
Meccanismi di protezione: ACL, crittografia e integrità del sistema
Case Studies dei Sistemi Operativi e Tendenze Moderne

Studio comparativo di Linux, Windows e macOS
Virtualizzazione e tendenze del cloud computing
Panoramica sui sistemi operativi mobili: Android e iOS
Sessioni Pratiche e Lavoro di Laboratorio

Pratica con i comandi Linux/Unix
Monitoraggio del sistema e attività di controllo dei processi
Silberschatz, Calvin, Gagne: Operating System Concepts 10th edition. John Wiley & Sons, Inc. 2018
L'esame consiste in un esame intermedio e un esame finale, oppure in un unico esame. Si tratta di un esame scritto con esercizi e domande aperte. Gli esercizi sono finalizzati a valutare le competenze pratiche del candidato sugli argomenti trattati nel corso e avranno diversi livelli di complessità. L'insegnante potrà richiedere un colloquio orale per valutare una corretta valutazione e si affronterà una discussione sull'esame scritto.
scritto

Il/la docente ha il dovere di vigilare affinché siano rispettate le regole di autenticità e originalità delle prove d'esame. Di conseguenza, nei casi in cui vi sia il sospetto di un comportamento irregolare, l'esame può prevedere un ulteriore approfondimento, contestuale alla prova d'esame, che potrà essere realizzato anche in modalità differente rispetto alle modalità sopra riportate.

Se lo studente sostiene l'esame intermedio, questo sarà valutato per il 40% del punteggio totale, mentre l'esame finale per il restante 60%.

La valutazione dell'esame scritto attribuirà metà del peso alla parte teorica e metà agli esercizi. Le domande teoriche saranno valutate in base alla profondità della conoscenza e alla proprietà del linguaggio tecnico mostrato dallo studente. Gli esercizi saranno valutati in base alla loro difficoltà.
Lezioni frontali e attività di laboratorio.
Programma definitivo.
Data ultima modifica programma: 18/03/2025