Sistemi Operativi A.A. 2021/2022¶
Benvenuti al corso di Sistemi Operativi per A.A. 2021/2022 del Corso di Laurea in Ingegneria Informatica di Roma Tre
Docente: Romolo Marotta
Avvertimento
Questa edizione del sito del corso è stata archiaviata. Per accedere alle differenti sezioni del corso utilizzare i link seguenti:
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 |
Link ai contenuti del corso¶
Ricevimento¶
Contattare il docente alla seguente email {nome}.{cognome}@uniroma3.it e riportare il prefisso [SO2122] nell’oggetto.
Modalità d’esame¶
L’esame prevede 1 prova ripartita in 2 due test, i cui punteggi sono ripartiti secondo quanto segue.
# Test |
Tipologia |
Punti |
Perc. |
Sufficienza |
1 |
Domande di teoria |
~20 |
~65% |
~12 |
2 |
Esercizi di programmazione |
~11 |
~35% |
~6 |
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. 2021/2022. 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. 2021/2022.
Date¶
Sessione Estiva:
24-06-2022. Se e solo se la capienza dell’aula non sarà sufficiente ad ospitare il numero di prenotati, verranno considerate date aggiuntive.
20-07-2022. Se e solo se la capienza dell’aula non sarà sufficiente ad ospitare il numero di prenotati, verranno considerate date aggiuntive.
Sessione Invernale:
26-01-2022. Se e solo se la capienza dell’aula non sarà sufficiente ad ospitare il numero di prenotati, verranno considerate le seguenti date aggiuntive: 28-01-2022, 31-01-2022.
21-02-2022. Se e solo se la capienza dell’aula non sarà sufficiente ad ospitare il numero di prenotati, verranno considerate le seguenti date aggiuntive: 24-02-2022, 28-02-2022.
L’assegnazione alle date aggiuntive viene fatta secondo una politica First-Come-First-Serve.
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, RAID, 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
Avvertimento
topic indica che i relativi contenuti sono stati esclusi dal programma