gpm_
Tutti i corsi
A.A. 2023/2024 · 1° Sem.

Reti e Sistemi Operativi (RSO)

RSO 6 CFU Docente

Risorse didattiche per l'edizione 23/24 del corso di Reti e Sistemi Operativi

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.DataDalleAlleDocenteArg.Lez.ContenutoMaterialeRif.
1125/09/202309:0012:00Prof. Di LunaSO1Introduzione al corso tecnica e amministrativa; Modulo 1: Concetti di base: introduzione ai sistemi operativi e alle architetture dei calcolatori
229/09/202309:0012:00Prof. Di LunaSO2Modulo 2: Strutture e funzioni di base del sistema operativo: Overview of linux, syscalls, boot, microkernel, monolithic kernels and hybrids, kernel modules (slide)
329/09/202313:0015:00Prof. Proietti MattiaReti11. Introduzione; 1.1 Informazioni Generali; 1.2 Programma del Corso; 1.3 Macchina VirtualeSlides 1, completeSlides
2402/10/202309:0012:00Prof. Di LunaSO3Modulo 3 - Processi
506/10/202309:0012:00Prof. Di LunaSO4Modulo 3 - Processi; Modulo 3  - Threads; Modulo 3 - IPC
606/10/202313:0015:00Prof. Proietti MattiaReti22. Reti di calcolatori e internet; 2.1 Che cos’è internet; 2.2 Edge e Core della rete; 2.3 Ritardi, Loss e ThroughputSlides 2, fino a n. 32Cap. 1 di [R1]
3-09/10/202309:0012:00---
713/10/202309:0012:00Prof. Di LunaSO5Modulo 3 - Processi - IPC; Modulo 3 - Segnali
813/10/202313:0015:00Prof. Proietti MattiaReti32. 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. 10Cap. 1 e 3 di [R1]
4916/10/202309:0012:00Prof. Di LunaSO6Sincronizzazione: 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
1020/10/202309:0012:00Prof. Di LunaSO7Sincronizzazione: 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.
1120/10/202313:0015:00Prof. Proietti MattiaReti43. 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, OssificationSlides 3, fino a n. 38Cap. 3 di [R1]
51223/10/202309:0012:00Prof. Di LunaSO8Sincronizzazione: 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
1327/10/202309:0012:00Prof. Di LunaSO9Sincronizzazione: rw locks. (slide); Gestione della memoria: Meccanismi basici di protezione, Binding at loading, compile, and execution time. Paging.
1427/10/202313:0015:00Prof. Proietti MattiaReti53. Livello di Trasporto; L3.1 Wireshark; L3.2 netcat; L3.3 Packet sniffing; L3.4 nmap; L3.5 git; L3.6 Katharà: installazione e configurazioneSlides 3, fino a n. 62Slides
61530/10/202309:0012:00Prof. Di LunaSO10Memoria: paginazione; Esercizi vari e ripasso argomenti
1603/11/202309:0012:00Prof. Proietti MattiaSO11. 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 FIFOSlides 1, fino a 29Cap. 10 di [S1]
1703/11/202313:0015:00Prof. Proietti MattiaReti63. Livello di Trasporto; L3.6 Katharà: laboratori 1, 2 e 3Slides 3, fino a 67Slides
71806/11/202310:0013:00Prof. Proietti MattiaSO21. 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 66Cap. 10 di [S1]
1910/11/202309:0012:00Prof. Proietti MattiaSO31. 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 VolatileSlides 2, fino a 12Cap. 10 e 11 di [S1]
2010/11/202313:0015:00Prof. Proietti MattiaReti73. Livello di Trasporto; L3.6 Katharà: laboratori 4, 5 (Routing dinamico con OSPF)Slides 3, fino a 76Slides
82113/11/202310:0013:00Prof. Proietti MattiaSO42. 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 IntroduzioneSlides 2, fino a 48Cap. 11 di [S1]
2217/11/202309:0012:00Prof. Proietti MattiaSO52.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 19Cap. 12 e 13 di [S1]
2317/11/202313:0015:00Prof. Proietti MattiaReti84. 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 21Slides
92420/11/202310:0013:00Prof. Proietti MattiaSO6E1 Esercizi riepilogativiSlidesSlides
2524/11/202309:0012:00Prof. Proietti MattiaReti94.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 51Slides
2624/11/202313:0015:00Prof. Proietti MattiaReti105. Socket; 5.1. Introduzione; 5.2. Socket UDP;Slide 5, fino a 17Cap. 2.7 di [R1]
102727/11/202310:0013:00Prof. Proietti MattiaSO73.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 ContiguaSlide 3, fino a 65Cap 13 e 14 di [S1]
2801/12/202309:0012:00Prof. Proietti MattiaReti115. Socket; 5.2. Socket UDP; 5.2. Socket TCP; L5.1. UDP Pinger L5.2. PhonebookSlides 3, fino a 37Cap. 2.7 di [R1] e Slides
2901/12/202313:0015:00Prof. Proietti MattiaReti126. 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 19Cap 5.3 di [R2] e 4.2 di [R3]
113004/12/202310:0013:00Prof. Proietti MattiaSO83.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. IntroduzioneSlides 4 fino a 22Cap. 14 e 18 di [S1], l'introduzione ai bixvds è 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/202309:0012:00----
-08/12/202313:0015:00----
123211/12/202310:0013:00Prof. Proietti MattiaSO94. 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 ComposeSlides 4, completeCap. 14 e 18 di [S1], l'introduzione ai bixvds è trattata ai capp. 1.1, 1.2, 1.3 di "Virtual Machines: Versatile Platforms for Systems and Processes", James Edward Smith & Ravi Nair (2020)
3315/12/202309:0012:00Prof. Proietti MattiaReti136. 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, completeCap 5.3 di [R2] e 4.2 di [R3]
3415/12/202313:0015:00Prof. Proietti MattiaReti14L6.1 Google RPC in PythonSlides 6, completeSlides
133518/12/202310:0013:00Prof. Proietti MattiaSO10E2 Esercizi RiepilogativiSlidesSlides
3622/12/202309:0012:00---
3722/12/202313:0015: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.