Reti e Sistemi Operativi (RSO)
A.Y. 2023/2024 (1° Sem.)
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:
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
- Introduzione
- Architetture dei Sistemi Operativi
- Processi e Threads
- Concorrenza e Sincronizzazione
- Gestione della Memoria
Sistemi Operativi (3CFU) B - Prof. Proietti Mattia
- Virtual Memory
- Introduzione
- Demand Paging
- Concetti di Base
- Lista Free-Frame
- Performance
- Copy-on-Write
- Sostituzione delle Pagine
- Sovra-allocazione
- Concetti di base
- Sostituzione FIFO
- Sostituzione OPT (Ottima)
- Sostituzione LRU
- Sostituzione LRU-approssimata
- Sostituzione basata su conteggio
- Allocazione dei Frame
- Minimo numero di frame
- Algoritmi di Allocazione
- Allocazione Globale e Locale
- Tipi di Page Fault
- NUMA
- Thrashing
- Compressione della Memoria
- Allocazione della Memoria Kernel
- Buddy System
- SLAB Allocator
- Altre Considerazioni
- Pre-Paging
- Dimensioni delle Pagine
- TLB Reach
- Dispositivi di Memoria di Massa e I/O
- Overview
- Introduzione
- HDD
- NVM
- Memoria Volatile
- Mapping degli indirizzi
- Scheduling HDD
- Introduzione
- FCFS
- SCAN
- C-SCAN
- Scheduling NVM
- Gestione dei Dispositivi di Massa
- Formattazione
- Partizioni e Volumi
- Cluster e Raw Disk
- Hardware I/O
- Introduzione
- Memory Mapped I/O
- Polling
- Interrupts
- Direct Memory Access (DMA)
- Interfacce I/O
- Introduzione
- Block e Char Devices
- Network Devices
- Clocks e Timers
- Nonblocking and Asynchronous I/O
- Vectored I/O
- Kernel I/O
- Scheduling
- Buffering
- Caching
- Spooling
- I/O Protection
- Strutture Dati
- Overview
- Filesystem
- Concetto di File
- Introduzione
- Concetto di File
- Attributi di File
- Operazioni su File
- Tipi di File
- Struttura dei File
- Struttura Interna dei File
- Metodi di Accesso
- Accesso Sequenziale
- Accesso Diretto
- Altri Metodi
- Strutture delle Directory
- Directory a Livello Singolo
- Directory a Due Livelli
- Directory a Grafo Aciclico
- Directory a Grafo
- Protezione
- Tipi di Accesso
- Controllo dell’Accesso
- Altri Metodi
- File Mappati in Memoria
- Struttura del Filesystem
- Operazioni sul Filesystem
- Implementazione delle Directory
- Lista Lineare
- Hash Table
- Metodi di Allocazione
- Introduzione
- Allocazione Contigua
- Allocazione Collegata
- Allocazione Indicizzata
- Gestione dello Spazio Libero
- Bit Vector
- Lista Collegata
- Grouping
- Counting
- Space Maps
- TRIMming
- Concetto di File
- Virtualizzazione e Container
- Macchine Virtuali
- Virtualizzazione
- Overview
- Benefici e Funzionalità
- Implementazione
- Container
- Introduzione
- Definizione
- Implementazione
- Concetti
- Docker
Laboratori:
- Virtual Memory
- L1.1 Shared Memory
- L1.2
brk()
esbrk()
- –
- –
- Virtualizzazione e Container
- L4.1 Docker
- L4.2 Dockerfile
- L4.3 Docker Compose
Reti (3CFU) - Prof. Proietti Mattia
- Introduzione
- Informazioni Generali
- Programma del Corso
- Concetti di Base
- Programma del Corso
- Esempi Pratici
- Macchina Virtuale
- Reti di calcolatori e internet
- Che cos’è internet
- Edge e Core della rete
- Ritardi, Loss e Throughput
- Livelli di Protocolli
- IPv4 e IPv6
- Livello di Trasporto
- Introduzione
- Multiplexing e Demultiplexing
- UDP
- Introduzione
- Utilizzi
- TCP
- Caratteristiche
- Header
- Comunicazione Affidabile
- Handshaking
- Stato della connessione
- netstat
- nmap
- Head-of-Line Blocking
- QUIC
- Introduzione
- Handshaking
- Controllo della congestione
- Comunicazione affidabile
- Ossification
- Introduzione
- Python
- Introduzione
- Caratteristiche
- Installazione
- Virtualenv
- Concetti di Base
- L’interprete
- Variabili
- Script
- Pacchetti
- Controllo del Flusso
- Liste
- Zip
- Dizionari
- Classi e Oggetti
- Classi
- Oggetti
- Moduli File ed Eccezioni
- Moduli
- File
- Eccezioni
- Script
- Misura del Tempo
- Introduzione
- Socket
- Introduzione
- Socket UDP
- Socket TCP
- RPC
- Introduzione
- Definizione
- Introduzione
- Funzionamento di Base
- Passaggio di Parametri
- Supporto Applicativo
- Stub Generation
- Supporto di Linguaggio
- Tipi
- RPC Asincrone
- RPC Sincrone
- Semantica con Failures
- Esempi
- sunRPC
- dceRPC
- gRPC
Laboratori:
- –
- –
- Livello di Trasporto
- L1 Wireshark
- netcat
- Packet sniffing
- nmap
- git
- Katharà
- Python
- Esercizi di base
- TCP SYN con Scapy
- Port Scanner con Scapy
- Traceroute con Scapy
- Socket
- UDP Pinger
- Phonebook
- Middleware
- 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.