Descrizione

Per informazioni più dettagliate si rimanda al sito ufficiale del corso

Lezioni

I docenti referenti del corso sono:

  • Prof. Giuseppe Antonio Di Luna (3CFU di S.O.)
  • Prof. Gabriele Proietti Mattia (3CFU di S.O. e 3CFU di Reti)

Programmazione

Le lezioni si terranno in Aula 4 dal 25/09/2023 al 22/12/2023:

  • il Lunedì dalle 9 alle 13;
  • il Venerdì dalle 9 alle 12;
  • il Venerdì dalle 13 alle 15;

Le lezioni si terranno anche su zoom:

  • qui per il prof. Di Luna;
  • qui per il prof. Proietti Mattia.

Piano delle lezioni

Sett. Lez. Data Dalle Alle Docente Arg. Lez. Contenuto Materiale Rif.
1 1 25/09/2023 09:00 12:00 Prof. Di Luna SO 1 Introduzione al corso tecnica e amministrativa; Modulo 1: Concetti di base: introduzione ai sistemi operativi e alle architetture dei calcolatori
2 29/09/2023 09:00 12:00 Prof. Di Luna SO 2 Modulo 2: Strutture e funzioni di base del sistema operativo: Overview of linux, syscalls, boot, microkernel, monolithic kernels and hybrids, kernel modules (slide)
3 29/09/2023 13:00 15:00 Prof. Proietti Mattia Reti 1 1. Introduzione; 1.1 Informazioni Generali; 1.2 Programma del Corso; 1.3 Macchina Virtuale Slides 1, complete Slides
2 4 02/10/2023 09:00 12:00 Prof. Di Luna SO 3 Modulo 3 - Processi
5 06/10/2023 09:00 12:00 Prof. Di Luna SO 4 Modulo 3 - Processi; Modulo 3  - Threads; Modulo 3 - IPC
6 06/10/2023 13:00 15:00 Prof. Proietti Mattia Reti 2 2. Reti di calcolatori e internet; 2.1 Che cos’è internet; 2.2 Edge e Core della rete; 2.3 Ritardi, Loss e Throughput Slides 2, fino a n. 32 Cap. 1 di [R1]
3 - 09/10/2023 09:00 12:00 - - -
7 13/10/2023 09:00 12:00 Prof. Di Luna SO 5 Modulo 3 - Processi - IPC; Modulo 3 - Segnali
8 13/10/2023 13:00 15:00 Prof. Proietti Mattia Reti 3 2. Reti di calcolatori e internet; 2.3 Ritardi, Loss e Throughput; 2.4 Livelli di Protocolli; 2.5 IPv4 e IPv6; 3. Livello di Trasporto; 3.1 Introduzione; Slides 3, fino a n. 10 Cap. 1 e 3 di [R1]
4 9 16/10/2023 09:00 12:00 Prof. Di Luna SO 6 Sincronizzazione: introduzione al problema, race conditions, sezione critica e soluzione di peterson; Sincronizzazione: problemi della soluzione di peterson, supporto hardware: barriere, test & set, cas. Spinlocks (o mutex) , semafori, problemi notevoli di sincronizzazione
10 20/10/2023 09:00 12:00 Prof. Di Luna SO 7 Sincronizzazione: Spinlocks (o mutex), semafori, deadlock e livelock. Tecniche per la rilevazione, la prevenzione e l'evitamento dei deadlock. problemi notevoli di sincronizzazione: il problema dei filosofi e rw locks.
11 20/10/2023 13:00 15:00 Prof. Proietti Mattia Reti 4 3. Livello di Trasporto; 3.1 Introduzione; 3.2 UDP: Introduzione, Utilizzi; 3.3 TCP: Caratteristiche, Header Comunicazione Affidabile, Handshaking, Stato della connessione, netstat, nmap, Head-of-Line Blocking; 3.4 QUIC: Introduzione, Handshaking, Controllo della congestione, Comunicazione affidabile, Ossification Slides 3, fino a n. 38 Cap. 3 di [R1]
5 12 23/10/2023 09:00 12:00 Prof. Di Luna SO 8 Sincronizzazione: Spinlocks (o mutex) , semafori, deadlock e livelock. Tecniche per la rilevazione, la prevenzione e l'evitamento dei deadlock. problemi notevoli di sincronizzazione: il problema dei filosofi e rw locks
13 27/10/2023 09:00 12:00 Prof. Di Luna SO 9 Sincronizzazione: rw locks. (slide); Gestione della memoria: Meccanismi basici di protezione, Binding at loading, compile, and execution time. Paging.
14 27/10/2023 13:00 15:00 Prof. Proietti Mattia Reti 5 3. Livello di Trasporto; L3.1 Wireshark; L3.2 netcat; L3.3 Packet sniffing; L3.4 nmap; L3.5 git; L3.6 Katharà: installazione e configurazione Slides 3, fino a n. 62 Slides
6 15 30/10/2023 09:00 12:00 Prof. Di Luna SO 10 Memoria: paginazione; Esercizi vari e ripasso argomenti
16 03/11/2023 09:00 12:00 Prof. Proietti Mattia SO 1 1. Virtual Memory; 1.1 Introduzione; 1.2 Demand Paging; 1.2.1 Concetti di Base; 1.2.2 Lista Free-Frame; 1.2.3 Performance; 1.3 Copy-on-Write; 1.4 Sostituzione delle Pagine; 1.4.1 Sovra-allocazione; 1.4.2 Concetti di base; 1.4.3 Sostituzione FIFO Slides 1, fino a 29 Cap. 10 di [S1]
17 03/11/2023 13:00 15:00 Prof. Proietti Mattia Reti 6 3. Livello di Trasporto; L3.6 Katharà: laboratori 1, 2 e 3 Slides 3, fino a 67 Slides
7 18 06/11/2023 10:00 13:00 Prof. Proietti Mattia SO 2 1. Virtual Memory; 1.4 Sostituzione delle Pagine; 1.4.3 Sostituzione FIFO; 1.4.4 Sostituzione OPT (Ottima); 1.4.5 Sostituzione LRU; 1.4.6 Sostituzione LRU-approssimata; 1.4.7 Sosituzione basata su conteggio; 1.5 Allocazione dei Frame; 1.5.1 Minimo numero di frame; 1.5.2 Algoritmi di Allocazione; 1.5.3 Allocazione Globale e Locale; 1.5.4 Tipi di Page Fault; 1.5.5 NUMA; 1.6 Thrashing; 1.7 Compressione della Memoria; 1.8 Allocazione della Memoria Kernel; 1.8.1 Buddy System; 1.8.2 SLAB Allocator; Slides 1, fino a 66 Cap. 10 di [S1]
19 10/11/2023 09:00 12:00 Prof. Proietti Mattia SO 3 1. Virtual Memory; 1.9 Altre Considerazioni; 1.9.1 Pre-Paging; 1.9.2 Dimensioni delle Pagine; 1.9.3 TLB Reach; 2. Dispositivi di Memoria di Massa e I/O; 2.1 Overview; 2.1.1 Introduzione; 2.1.2 HDD; 2.1.3 NVM; 2.1.4 Memoria Volatile Slides 2, fino a 12 Cap. 10 e 11 di [S1]
20 10/11/2023 13:00 15:00 Prof. Proietti Mattia Reti 7 3. Livello di Trasporto; L3.6 Katharà: laboratori 4, 5 (Routing dinamico con OSPF) Slides 3, fino a 76 Slides
8 21 13/11/2023 10:00 13:00 Prof. Proietti Mattia SO 4 2. Dispositivi di Memoria di Massa e I/O; 2.1 Overview; 2.1.4 Memoria Volatile; 2.1.5 Mapping degli indirizzi; 2.2 Scheduling HDD; 2.2.1 Introduzione; 2.2.2 FCFS; 2.2.3 SCAN; 2.2.4 C-SCAN; 2.3 Scheduling NVM; 2.4 Gestione dei Dispositivi di Massa; 2.4.1 Formattazione; 2.4.2 Partizioni e Volumi; 2.4.3 Cluster e Raw Disk; 2.4 Hardware I/O; 2.4.1 Introduzione; 2.4.2 Memory Mapped I/O; 2.4.3 Polling; 2.4.4 Interrupts; 2.4.5 Direct Memory Access (DMA); 2.5 Interfacce I/O; 2.5.1 Introduzione Slides 2, fino a 48 Cap. 11 di [S1]
22 17/11/2023 09:00 12:00 Prof. Proietti Mattia SO 5 2.5. Interfacce I/O; 2.5.2. Block e Char Devices; 2.5.3. Network Devices; 2.5.4. Clocks e Timers; 2.5.5. Nonblocking and Asynchronous I/O; 2.5.6. Vectored I/O; 2.6. Kernel I/O; 2.6.1. Scheduling; 2.6.2. Buffering; 2.6.3. Caching; 2.6.4. Spooling; 2.6.5. I/O Protection; 2.6.6. Strutture Dati; 3. Filesystem; 3.1. Concetto di File; 3.1.1. Introduzione; 3.1.2. Concetto di File; 3.1.3. Attributi di File; 3.1.4. Operazioni su File; 3.1.5. Tipi di File; 3.1.6. Struttura dei File; 3.1.7. Struttura Interna dei File; 3.2. Metodi di Accesso; 3.2.1. Accesso Sequenziale; 3.2.2. Accesso Diretto; Slides 3, fino a 19 Cap. 12 e 13 di [S1]
23 17/11/2023 13:00 15:00 Prof. Proietti Mattia Reti 8 4. Python; 4.1. Introduzione; 4.1.1. Caratteristiche; 4.1.2. Installazione; 4.1.3. Virtualenv; 4.2. Concetti di Base; 4.2.1. L’interprete; 4.2.2. Variabili; 4.2.3. Script; 4.2.4. Pacchetti; 4.2.5. Controllo del Flusso; 4.2.6. Liste; 4.2.7. Zip; 4.2.8. Dizionari; 4.3. Classi e Oggetti; 4.3.1. Classi; Slides 4, fino a 21 Slides
9 24 20/11/2023 10:00 13:00 Prof. Proietti Mattia SO 6 E1 Esercizi riepilogativi Slides Slides
25 24/11/2023 09:00 12:00 Prof. Proietti Mattia Reti 9 4.3. Classi e Oggetti; 4.3.1. Classi; 4.3.2. Oggetti; 4.4. Moduli File ed Eccezioni; 4.4.1. Moduli; 4.4.2. File; 4.4.3. Eccezioni; 4.4.4. Script; 4.4.5. Misura del Tempo; L4.1. Esercizi di base; L4.2. TCP SYN con Scapy; L4.3. Port Scanner con Scapy; L4.4. Traceroute con Scapy; Slide 4, fino a 51 Slides
26 24/11/2023 13:00 15:00 Prof. Proietti Mattia Reti 10 5. Socket; 5.1. Introduzione; 5.2. Socket UDP; Slide 5, fino a 17 Cap. 2.7 di [R1]
10 27 27/11/2023 10:00 13:00 Prof. Proietti Mattia SO 7 3.2. Metodi di Accesso; 3.2.1. Accesso Sequenziale; 3.2.2. Accesso Diretto; 3.2.3. Altri Metodi; 3.3. Strutture delle Directory; 3.3.1. Directory a Livello Singolo; 3.3.2. Directory a Due Livelli; 3.3.3. Directory a Grafo Aciclico; 3.3.4. Directory a Grafo; 3.4. Protezione; 3.4.1. Tipi di Accesso; 3.4.2. Controllo dell’Accesso; 3.4.3. Altri Metodi; 3.5. File Mappati in Memoria; 3.6. Struttura del Filesystem; 3.7. Operazioni sul Filesystem; 3.8. Implementazione delle Directory; 3.8.1. Lista Lineare; 3.8.2. Hash Table; 3.9. Metodi di Allocazione; 3.9.1. Introduzione; 3.9.2. Allocazione Contigua Slide 3, fino a 65 Cap 13 e 14 di [S1]
28 01/12/2023 09:00 12:00 Prof. Proietti Mattia Reti 11 5. Socket; 5.2. Socket UDP; 5.2. Socket TCP; L5.1. UDP Pinger L5.2. Phonebook Slides 3, fino a 37 Cap. 2.7 di [R1] e Slides
29 01/12/2023 13:00 15:00 Prof. Proietti Mattia Reti 12 6. RPC; 6.1. Introduzione; 6.2. Definizione; 6.2.1. Introduzione; 6.2.2. Funzionamento di Base; 6.2.3. Passaggio di Parametri; 6.3. Supporto Applicativo; Slides 6, fino a 19 Cap 5.3 di [R2] e 4.2 di [R3]
11 30 04/12/2023 10:00 13:00 Prof. Proietti Mattia SO 8 3.9.3. Allocazione Collegata; 3.9.4. Allocazione Indicizzata; 3.10. Gestione dello Spazio Libero; 3.10.1. Bit Vector; 3.10.2. Lista Collegata; 3.10.3. Grouping; 3.10.4. Counting; 3.10.5. Space Maps; 3.10.6. TRIMming; 4. Virtualizzazione e Container; 4.1. Macchine Virtuali; 4.1.1. Virtualizzazione; 4.1.2. Overview; 4.1.3. Benefici e Funzionalità; 4.1.4. Implementazione; 4.2. Container; 4.2.1. Introduzione Slides 4 fino a 22 Cap. 14 e 18 di [S1], l'introduzione ai container è trattata ai capp. 1.1, 1.2, 1.3 di "Virtual Machines: Versatile Platforms for Systems and Processes", James Edward Smith & Ravi Nair (2020)
- 08/12/2023 09:00 12:00 - - - -
- 08/12/2023 13:00 15:00 - - - -
12 32 11/12/2023 10:00 13:00 Prof. Proietti Mattia SO 9 4. Virtualizzazione e Container; 4.2. Container; 4.2.1. Introduzione; 4.2.2. Definizione; 4.2.3. Implementazione; 4.2.4. Concetti; 4.2.5. Docker; L4.1 Docker; L4.2 Dockerfile; L4.3 Docker Compose Slides 4, complete Cap. 14 e 18 di [S1], l'introduzione ai container è trattata ai capp. 1.1, 1.2, 1.3 di "Virtual Machines: Versatile Platforms for Systems and Processes", James Edward Smith & Ravi Nair (2020)
33 15/12/2023 09:00 12:00 Prof. Proietti Mattia Reti 13 6. RPC; 6.3. Supporto Applicativo; 6.3.1. Stub Generation; 6.3.2. Supporto di Linguaggio; 6.4. Tipi; 6.4.1. RPC Asincrone; 6.4.2. RPC Sincrone; 6.5. Semantica con Failures; 6.6. Esempi; 6.6.1. sunRPC; 6.6.2. dceRPC; 6.6.3. gRPC; Slides 6, complete Cap 5.3 di [R2] e 4.2 di [R3]
34 15/12/2023 13:00 15:00 Prof. Proietti Mattia Reti 14 L6.1 Google RPC in Python Slides 6, complete Slides
13 35 18/12/2023 10:00 13:00 Prof. Proietti Mattia SO 10 E2 Esercizi Riepilogativi Slides Slides
36 22/12/2023 09:00 12:00 - - -
37 22/12/2023 13:00 15:00 - - -

Materiale didattico

Per le lezioni del prof. Proietti Mattia, le slides delle lezioni si trovano a questo link. Per la restante parte del corso si rimanda al sito ufficiale.

Syllabus

Il syllabus del corso è soggetto a variazioni prima della fine del corso, dopodiché può considerarsi definitivo.

Sistemi Operativi (3CFU) A - Prof. Di Luna

  1. Introduzione
  2. Architetture dei Sistemi Operativi
  3. Processi e Threads
  4. Concorrenza e Sincronizzazione
  5. Gestione della Memoria

Sistemi Operativi (3CFU) B - Prof. Proietti Mattia

  1. Virtual Memory
    1. Introduzione
    2. Demand Paging
      1. Concetti di Base
      2. Lista Free-Frame
      3. Performance
    3. Copy-on-Write
    4. Sostituzione delle Pagine
      1. Sovra-allocazione
      2. Concetti di base
      3. Sostituzione FIFO
      4. Sostituzione OPT (Ottima)
      5. Sostituzione LRU
      6. Sostituzione LRU-approssimata
      7. Sostituzione basata su conteggio
    5. Allocazione dei Frame
      1. Minimo numero di frame
      2. Algoritmi di Allocazione
      3. Allocazione Globale e Locale
      4. Tipi di Page Fault
      5. NUMA
    6. Thrashing
    7. Compressione della Memoria
    8. Allocazione della Memoria Kernel
      1. Buddy System
      2. SLAB Allocator
    9. Altre Considerazioni
      1. Pre-Paging
      2. Dimensioni delle Pagine
      3. TLB Reach
  2. Dispositivi di Memoria di Massa e I/O
    1. Overview
      1. Introduzione
      2. HDD
      3. NVM
      4. Memoria Volatile
      5. Mapping degli indirizzi
    2. Scheduling HDD
      1. Introduzione
      2. FCFS
      3. SCAN
      4. C-SCAN
    3. Scheduling NVM
    4. Gestione dei Dispositivi di Massa
      1. Formattazione
      2. Partizioni e Volumi
      3. Cluster e Raw Disk
    5. Hardware I/O
      1. Introduzione
      2. Memory Mapped I/O
      3. Polling
      4. Interrupts
      5. Direct Memory Access (DMA)
    6. Interfacce I/O
      1. Introduzione
      2. Block e Char Devices
      3. Network Devices
      4. Clocks e Timers
      5. Nonblocking and Asynchronous I/O
      6. Vectored I/O
    7. Kernel I/O
      1. Scheduling
      2. Buffering
      3. Caching
      4. Spooling
      5. I/O Protection
      6. Strutture Dati
  3. Filesystem
    1. Concetto di File
      1. Introduzione
      2. Concetto di File
      3. Attributi di File
      4. Operazioni su File
      5. Tipi di File
      6. Struttura dei File
      7. Struttura Interna dei File
    2. Metodi di Accesso
      1. Accesso Sequenziale
      2. Accesso Diretto
      3. Altri Metodi
    3. Strutture delle Directory
      1. Directory a Livello Singolo
      2. Directory a Due Livelli
      3. Directory a Grafo Aciclico
      4. Directory a Grafo
    4. Protezione
      1. Tipi di Accesso
      2. Controllo dell’Accesso
      3. Altri Metodi
    5. File Mappati in Memoria
    6. Struttura del Filesystem
    7. Operazioni sul Filesystem
    8. Implementazione delle Directory
      1. Lista Lineare
      2. Hash Table
    9. Metodi di Allocazione
      1. Introduzione
      2. Allocazione Contigua
      3. Allocazione Collegata
      4. Allocazione Indicizzata
    10. Gestione dello Spazio Libero
      1. Bit Vector
      2. Lista Collegata
      3. Grouping
      4. Counting
      5. Space Maps
      6. TRIMming
  4. Virtualizzazione e Container
  5. Macchine Virtuali
    1. Virtualizzazione
    2. Overview
    3. Benefici e Funzionalità
    4. Implementazione
  6. Container
    1. Introduzione
    2. Definizione
    3. Implementazione
    4. Concetti
    5. Docker

Laboratori:

  1. Virtual Memory
    1. L1.1 Shared Memory
    2. L1.2 brk() e sbrk()
  2. Virtualizzazione e Container
    1. L4.1 Docker
    2. L4.2 Dockerfile
    3. L4.3 Docker Compose

Reti (3CFU) - Prof. Proietti Mattia

  1. Introduzione
    1. Informazioni Generali
    2. Programma del Corso
      1. Concetti di Base
      2. Programma del Corso
      3. Esempi Pratici
    3. Macchina Virtuale
  2. Reti di calcolatori e internet
    1. Che cos’è internet
    2. Edge e Core della rete
    3. Ritardi, Loss e Throughput
    4. Livelli di Protocolli
    5. IPv4 e IPv6
  3. Livello di Trasporto
    1. Introduzione
      1. Multiplexing e Demultiplexing
    2. UDP
      1. Introduzione
      2. Utilizzi
    3. TCP
      1. Caratteristiche
      2. Header
      3. Comunicazione Affidabile
      4. Handshaking
      5. Stato della connessione
      6. netstat
      7. nmap
      8. Head-of-Line Blocking
    4. QUIC
      1. Introduzione
      2. Handshaking
      3. Controllo della congestione
      4. Comunicazione affidabile
      5. Ossification
  4. Python
    1. Introduzione
      1. Caratteristiche
      2. Installazione
      3. Virtualenv
    2. Concetti di Base
      1. L’interprete
      2. Variabili
      3. Script
      4. Pacchetti
      5. Controllo del Flusso
      6. Liste
      7. Zip
      8. Dizionari
    3. Classi e Oggetti
      1. Classi
      2. Oggetti
    4. Moduli File ed Eccezioni
      1. Moduli
      2. File
      3. Eccezioni
      4. Script
      5. Misura del Tempo
  5. Socket
    1. Introduzione
    2. Socket UDP
    3. Socket TCP
  6. RPC
    1. Introduzione
    2. Definizione
      1. Introduzione
      2. Funzionamento di Base
      3. Passaggio di Parametri
    3. Supporto Applicativo
      1. Stub Generation
      2. Supporto di Linguaggio
    4. Tipi
      1. RPC Asincrone
      2. RPC Sincrone
    5. Semantica con Failures
    6. Esempi
      1. sunRPC
      2. dceRPC
      3. gRPC

Laboratori:

  1. Livello di Trasporto
    1. L1 Wireshark
    2. netcat
    3. Packet sniffing
    4. nmap
    5. git
    6. Katharà
  2. Python
    1. Esercizi di base
    2. TCP SYN con Scapy
    3. Port Scanner con Scapy
    4. Traceroute con Scapy
  3. Socket
    1. UDP Pinger
    2. Phonebook
  4. Middleware
    1. Google RPC in Python

Testi di Riferimento

Sistemi Operativi:

  • [S1] Silberschatz, Calvin, Gagne. Operating Systems Concepts, tenth edition.
  • [S2] Stallings. Operating Systems: Internals and Design Principles.
  • [S3] John L. Hennessy, David A. Patterson -Computer Organization and Design RISC-V Edition.

Reti

  • [R1] Kurose, James F., and Keith W. Ross. “Computer networking: A top-down approach Eight edition.” Pearson (2021);
  • [R2] Larry L. Peterson and Bruce S. Davie. “Computer Networks: a system approach (Sixth Edition)”. Elsevier (2022);
  • [R3] M. Van Steen and A.S. Tanenbaum. “Distributed Systems (4th edition)”. (Libro gratuito: https://www.distributed-systems.net/index.php/books/ds4/);

Esami

Per le informazioni sugli esami si rimanda al sito ufficiale del corso.