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

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:

  1. Il voto finale è pari alla somma dei punteggi ottenuti:

  • nei test 1 e 2;

  • dalla vincita di una sfida avanzata dal docente.

  1. Per superare l’esame occorre ottenere la sufficienza in entrambi i test.

  2. 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.

  3. Per la lode è richiesto un punteggio di 31 punti.

  4. 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.

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