Sistemi Operativi A.A. 2022/2023¶
Benvenuti al corso di Sistemi Operativi per A.A. 2022/2023 del Corso di Laurea in Ingegneria Informatica di Roma Tre
Docente: Romolo Marotta
News¶
Avvertimento
Pubblicati i risultati della sessione di Luglio 2023
Per la lista completa degli aggiornamenti visita la sezione dedicata: News
Obiettivi del corso¶
L’obiettivo del corso è fornire allo studente competenze sull’architettura di un generico sistema operativo moderno, con particolare riferimento al sistema Linux, e sulle metodologie usate per risolvere le problematiche tipiche della gestione di risorse in un sistema operativo moderno. Infine, particolare attenzione verrà dedicata alla programmazione di sistema e scripting.
Orario delle lezioni¶
Giorno |
Orario |
Aula |
---|---|---|
Martedì |
16:00 - 18:00 |
N13 [Vasca Navale 79/81] - Aula Teams |
Mercoledì |
16:00 - 18:00 |
N13 [Vasca Navale 79/81] - Aula Teams |
Avvertimento
Il corso è pensato per essere seguito dagli studenti in presenza.
Le lezioni saranno comunque trasmesse in streaming e registrate, ma queste ulteriori modalità di erogazione sono disponibili soprattutto per coloro che saltuariamente non possono partecipare alle lezioni.
Se, per motivi tecnici, non sarà possibile registrare o trasmettere, la lezione sarà impartita ugualmente.
Se il docente riterrà utile usare la lavagna e non sarà possibile inquadrarla in modo efficace, la lezione si svolgerà ugualmente.
Non è detto che sarà possibile, per gli studenti che parteciperanno in remoto, interagire con il docente durante la lezione.
Link ai contenuti del corso¶
Stream
Ricevimento¶
Contattare il docente alla seguente email {nome}.{cognome}@uniroma3.it e riportare il prefisso [SO2223] nell’oggetto.
Modalità d’esame¶
L’esame prevede 2 prove i cui punteggi sono ripartiti secondo quanto segue.
# Test |
Tipologia |
Punti |
Perc. |
Sufficienza |
Durata |
1 |
Domande di teoria |
~21 |
~65% |
~12 |
~2h |
2 |
Esercizi di programmazione |
~10 |
~35% |
~6 |
~1h30m |
Regole:
Il voto finale è pari alla somma dei punteggi ottenuti:
nei test 1 e 2;
dalla vincita di una sfida avanzata dal docente.
Per superare l’esame occorre ottenere la sufficienza in entrambi i test.
Qualora la sufficienza sia stata conseguita solo su uno dei due test, lo studente è esonerato dal sostenere il test in cui è risultato sufficiente nell’A.A. 2022/2023. Potrà perciò risostenere unicamente il test dove non ha conseguito la sufficienza.
Per la lode è richiesto un punteggio di 31 punti.
I punteggi ottenuti nei test e nelle sfide potranno essere mantenuti fino all’ultima sessione di esame per l’A.A. 2022/2023.
Date¶
I Appello (Gennaio)
Prova di programmazione: 31/01 in Aula ECampus (turni disponibili dopo il 25/01)
Prova di teoria: 07/02 in Aula N11 ore 14:00
II Appello (Febbraio)
Prova di programmazione: 21/02 (turni disponibili dopo il 15/02)
Prova di teoria: 28/02 in Aula N11 ore 10:00
Testi consigliati e link utili (in aggiornamento)¶
[t1] Operating Systems: Internals and Design Principles - William Stallings - Prentice Hall, fifth edition (o superiori). Riferimento: ninth global edition.
[t2] Sistemi operativi: Concetti ed Esempi - Silberschatz Abraham, Galvin Peter Baer, Gagne Greg - Addison Wesley/Pearson, nona edizione (o superiori). Riferimento: tenth global edition.
[t3] Programmazione in Ambiente UNIX - Francesco Quaglia, Camil Demetrescu - Disponibile in formato pdf
Programma¶
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
Scheduling. a breve medio e lungo termine, algoritmi per cpu scheduling
Sincronizzazione. primitive di sincronizzazione, RMW, mutex, semafori
Memoria. allocatori di memoria, partitioning, best/first/next fit, buddy algorithm, paging, segmentation, memoria virtuale e sua gestione hardware/software
I/O e File Management. Disk scheduling, UNIX File Management, inode, Linux VFS, ext2
Introduzione a Linux. comandi di utilizzo frequente (e.g., gestione file e directory), variabili di ambiente, redirection, piping, segnali, espressioni regolari (sed e grep), scripting (bash, awk), linux filesystem management
Programmazione di Sistema. Gestione in C dei processi/thread su ambiente linux
**Debugger**. utilizzo di gdb stepping, breakpoints, watching, backtrace, comandi gdb.
**Virtualizzazione.** Concetti generali, container, Docker