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.

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:

  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. 2022/2023. 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. 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

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