20801961 - SISTEMI OPERATIVI

Fornire (1) competenze sulla struttura di un generico sistema operativo moderno, (2) competenze sulla struttura di un sistema operativo Unix con particolare riferimento al sistema Linux, (3) conoscenza delle particolari metodologie usate per risolvere le problematiche tipiche della gestione delle risorse in un sistema operativo moderno, (4) abilità nel usare e una piattaforma Unix a livello utente, (5) abilità nella programmabilità di un sistema Unix (scripting), (6) abilità di base nella programmazione di sistema.
scheda docente | materiale didattico

Programma

- Richiami di calcolatori elettronici: architettura di un elaboratore, CPU, registri, esecuzione di una istruzione, interrupt, gerarchie di memoria, localita', I/O, chiamate di procedura
- Panoramica sui sistemi operativi moderni: definizione di sistema operativo, scopi, architettura a strati, kernel/user mode, caratteristiche salienti
- Processi e Thread: dispatching, stati, descrizione e controllo, modelli tipici di sistemi operativi e di uso della memoria nei processi
- Memoria: allocatori di memoria, partitioning, best/first/next fit, buddy algorithm, paging, segmentation, memoria virtuale e sua gestione hardware/software
- Scheduling: a breve medio e lungo termine, algoritmi per cpu scheduling
- I/O e File Management: Disk scheduling, RAID, UNIX File Management, inode, Linux VFS, ext2
- Sincronizzazione: primitive di sincronizzazione, RMW, mutex, semafori
- Introduzione a Linux: comandi di utilizzo frequente (e.g., gestione file e directory), variabili di ambiente, piping, redirection, segnali, espressioni regolari (sed e grep), scripting (bash, awk), linux filesystem management
- Debugger: utilizzo di gdb stepping, breakpoints, watching, backtrace, comandi gdb.
- Programmazione di Sistema: Gestione in C dei processi/thread su ambiente linux
- Virtualizzazione: Concetti generali, container, Docker

Testi Adottati

Il corso è in parte basato sui seguenti testi:

[t1] Operating Systems: Internals and Design Principles - William Stallings - Prentice Hall, quinta edizione (o superiori). Riferimento: nona edizione.
[t2] Sistemi operativi: Concetti ed Esempi - Silberschatz Abraham, Galvin Peter Baer, Gagne Greg - Addison Wesley/Pearson, nona edizione (o superiori). Riferimento: tenth global edition.

Tuttavia alcuni argomenti sono trattati solo sulle slide pubblicate nel materiale didattico.

Modalità Erogazione

Lezioni frontali in presenza

Modalità Frequenza

Frequenza non obbligatoria

Modalità Valutazione

Domande di teoria (65% del voto) Esercizi di programmazione (35% del voto)