OPERATING SYSTEMS

Anno accademico
2025/2026 Programmi anni precedenti
Titolo corso in inglese
OPERATING SYSTEMS
Codice insegnamento
CT0670 (AF:534309 AR:301152)
Lingua di insegnamento
Inglese
Modalità
In presenza
Crediti formativi universitari
6
Livello laurea
Laurea
Settore scientifico disciplinare
INF/01
Periodo
II Semestre
Anno corso
2
Sede
VENEZIA
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
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