In questa pagina viene riportato il diario dettagliato delle lezioni. Per ogni lezione viene riportato, il syllabus tentativo ed effettuato, le slide, il materiale da studiare e di approfondimento e il link zoom.
Le lezioni in streaming su zoom hanno l'accesso automatico con la mail uniroma1, gli altri verranno ammessi nella stanza virtuale manualmente.
Per Sistemi Operativi (6CFU)
Testi del corso:
[S1] Silberschatz, Calvin, Gagne. Operating Systems Concepts, tenth edition. (LIBRO PRINCIPALE)
[S2] Stallings. Operating Systems: Internals and Design Principles.
[S3] John L. Hennessy, David A. Patterson -Computer Organization and Design RISC-V Edition.
Additional Readings:
Sito web del prof. Francesco Quaglia, che ha gentilmente concesso l'uso di parte del suo materiale: https://francescoquaglia.github.io/TEACHING/SISTEMI-OPERATIVI/CURRENT/index.html
Il sito contiene argomenti avanzati che possono essere di interesse per gli studenti che vogliano estendere la loro conoscenza dei sistemi operativi moderni.
Ciciani, Pellegrini. Computing Architectures. (Reperibile sul sito Web del prof. Ciciani).
Demetrescu, Cono, Coppa. Dispensa di Sistemi di Calcolo (https://docs.google.com/document/d/1gNOXw9Iln5ZUpeplYbNvV1yL5WMZWcBJ7009k2fBgKc/edit#heading=h.np7lnsh3f2mi)
Per Reti (3CFU)
Testi del corso (per approfondimenti e riferimento):
[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/);
Repository con il codice presentato a lezione
Syllabus effettuato della lezione.
Introduzione al corso tecnica e amministrativa (slide).
Modulo 1: Concetti di base: introduzione ai sistemi operativi e alle architetture dei calcolatori (slide).
Concetti chiave: Funzioni di un sistema operativo; principio del layering; cenni sulle architetture dei calcolatori: macchina di von neuman, Program Counter e concetto di control flow, ciclo di vita delle istruzioni; Interrupt, Eccezioni e trap, gerarchia di memoria, multiprocessing e multi tasking.
Materiale da leggere: i concetti sono coperti principalmente dal primo capitolo del libro di testo Operating Systems Concepts.
prof. Di Luna - Syllabus tentativo della lezione.
Modulo 2: Strutture e funzioni di base del sistema operativo: Overview of linux, syscalls, boot, microkernel, monolithic kernels and hybrids, kernel modules (slide)
Concetti chiave: Struttura a grandi linee di un sistema operativo linux, libc, system call, boot di un sistema operativo, microkernel, kernel monolotici e ibridi.
Materiale da leggere: i concetti sono coperti principalmente dal secondo capitolo del libro di testo Operating Systems Concepts.
prof. Proietti Mattia - Link per lezione Google Meet: https://meet.google.com/itk-swqr-bxc
Syllabus della lezione. Le slides sono disponibili in questa cartella
1. Introduzione al corso
1.1 Informazioni Generali
1.2 Programma del Corso
1.3 Macchina Virtuale
Materiale di riferimento: Slides
prof. Di Luna - Syllabus tentativo della lezione. Link: https://uniroma1.zoom.us/j/7981663898
Modulo 3 - Processi (slide)
Concetti chiave: Definizione di processo, Process Control Block, layout di memoria di un processo, ciclo di vita di un processo (ossia il ciclo degli stati di un processo da non confondere con la cpu e lo stato totale del processo), scheduling e context-switch, operazione sui processi: creazione e terminazione. relative syscall unix (fork, exec, wait, ...)
Materiale da leggere: i concetti sono coperti principalmente dal terzo capitolo del libro di testo Operating Systems Concepts e dall'analogo capitolo dello stallings.
prof. Di Luna - Syllabus tentativo della lezione. Link: https://uniroma1.zoom.us/j/7981663898
Concetti chiave: Syscall unix per la gestione dei processi (fork, exec, wait, ...) ed esempi. Shared memories vs message queue. Il problema del produttore e consumatore.
Materiale da leggere: i concetti sono coperti principalmente dal terzo capitolo del libro di testo Operating Systems Concepts e dall'analogo capitolo dello stallings.
prof. Proietti Mattia - Link per seguire la lezione da remoto: https://uniroma1.zoom.us/j/94011137468?pwd=ODJzdmdBNnRYdGdPT2ZkT2NReXRxdz09
Syllabus della lezione
2. Reti di calcolatori e internet
2.1 Che cos’è internet
2.2 Edge e Core della rete
2.3 Ritardi, Loss e Throughput
Concetti chiave: descrizione di internet alto livello, ritardi di rete, packet switching e circuit switching
Materiale di riferimento e da leggere: cap. 1 di [R1]. Le slides sono disponibili in questa cartella
GENTILI STUDENTI, A CAUSA DI UN IMPREVISTO LA LEZIONE DI LUNEDì E' Cancellata. Si prega di farne diffusione ai colleghi.
prof. Di Luna
Concetti chiave: API posix per shared memory e message queue, esempi. Segnali in posix, asincroni vs sincroni. Gestione dei segnali: ignore, default, block or handle. Segnali ed ereditarietà.
Materiale da leggere: i segnali sono coperti parzialmente sul libro di testo, si legga lo stallings.
Prof. Proietti Mattia - Link per seguire la lezione da remoto: https://uniroma1.zoom.us/j/94011137468?pwd=ODJzdmdBNnRYdGdPT2ZkT2NReXRxdz09
Syllabus della lezione
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
Concetti chiave: definizione di throughput, pila dei protocolli, caratteristiche del livello di trasporto, ipv4 e ipv6, multiplexing/demultiplexing
Materiale di riferimento e da leggere: cap. 1 e 3 di [R1]. Le slides sono disponibili in questa cartella
prof. Di Luna - Syllabus tentativo della lezione. Link: https://uniroma1.zoom.us/j/7981663898
Sincronizzazione: introduzione al problema, race conditions, sezione critica e soluzione di peterson. (slide)
Sincronizzazione: problemi della soluzione di peterson, supporto hardware: barriere, test & set, cas. Spinlocks (o mutex) , semafori, problemi notevoli di sincronizzazione (slide)
Materiale da leggere: i segnali sono coperti parzialmente sul libro di testo, si legga lo stallings. La sincronizzazione è sul capitolo 6 e 7 del libro di testo.
prof. Proietti Mattia - Link per seguire la lezione da remoto: https://uniroma1.zoom.us/j/94011137468?pwd=ODJzdmdBNnRYdGdPT2ZkT2NReXRxdz09
Syllabus della lezione
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
Concetti chiave: come definito nel syllabus
Materiale di riferimento: cap. 3 di [R1]. Le slides sono disponibili in questa cartella
prof. Di Luna
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. (slide)
Materiale da leggere: i segnali sono coperti parzialmente sul libro di testo, si legga lo stallings. La sincronizzazione è sul capitolo 6 e 7 del libro di testo.
prof. Di Luna
Sincronizzazione: rw locks. (slide)
Gestione della memoria: Meccanismi basici di protezione, Binding at loading, compile, and execution time. Paging (slide).
Materiale da leggere: i segnali sono coperti parzialmente sul libro di testo, si legga lo stallings. La sincronizzazione è sul capitolo 6 e 7 del libro di testo.
prof. Proietti Mattia - Link per seguire la lezione da remoto: https://uniroma1.zoom.us/j/94011137468?pwd=ODJzdmdBNnRYdGdPT2ZkT2NReXRxdz09
Syllabus della lezione
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
Concetti chiave: wireshark, packet sniffing, utilizzo utility di rete come netcat e nmap, installazione e configurazione di Katharà
Materiale di riferimento: Le slides sono disponibili in questa cartella
prof. Proietti Mattia - Link per seguire la lezione da remoto: https://uniroma1.zoom.us/j/94011137468?pwd=ODJzdmdBNnRYdGdPT2ZkT2NReXRxdz09
Syllabus della lezione. Inizio del Modulo B di Sistemi Operativi.
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
Materiale di riferimento e da leggere: Cap 10 di [S1]. Le slides sono disponibili in questa cartella
prof. Proietti Mattia - Link per seguire la lezione da remoto: https://uniroma1.zoom.us/j/94011137468?pwd=ODJzdmdBNnRYdGdPT2ZkT2NReXRxdz09
Syllabus della lezione.
3. Livello di Trasporto
L3.6 Katharà: laboratori 1, 2 e 3
Materiale di riferimento: Le slides sono disponibili in questa cartella
prof. Proietti Mattia - Link per seguire la lezione da remoto: https://uniroma1.zoom.us/j/94011137468?pwd=ODJzdmdBNnRYdGdPT2ZkT2NReXRxdz09
Syllabus della lezione.
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
Materiale di riferimento e da leggere: Cap 10 di [S1]. Le slides sono disponibili in questa cartella
prof. Proietti Mattia - Link per seguire la lezione da remoto: https://uniroma1.zoom.us/j/94011137468?pwd=ODJzdmdBNnRYdGdPT2ZkT2NReXRxdz09
Syllabus della lezione.
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
Materiale di riferimento e da leggere: Cap 10 e 11 di [S1]. Le slides sono disponibili in questa cartella
prof. Proietti Mattia - Link per seguire la lezione da remoto: https://uniroma1.zoom.us/j/94011137468?pwd=ODJzdmdBNnRYdGdPT2ZkT2NReXRxdz09
Syllabus della lezione.
3. Livello di Trasporto
L3.6 Katharà: laboratori 4, 5 (Routing dinamico con OSPF)
Materiale di riferimento: Le slides sono disponibili in questa cartella
prof. Proietti Mattia - Link per seguire la lezione da remoto: https://uniroma1.zoom.us/j/94011137468?pwd=ODJzdmdBNnRYdGdPT2ZkT2NReXRxdz09
Syllabus della lezione.
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
Materiale di riferimento e da leggere: Cap 11 di [S1]. Le slides sono disponibili in questa cartella
prof. Proietti Mattia - Link per seguire la lezione da remoto: https://uniroma1.zoom.us/j/94011137468?pwd=ODJzdmdBNnRYdGdPT2ZkT2NReXRxdz09
Syllabus della lezione.
2. Dispositivi di Memoria di Massa e I/O
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
Materiale di riferimento e da leggere: Cap 11 e 12 di [S1]. Le slides sono disponibili in questa cartella
prof. Proietti Mattia - Link per seguire la lezione da remoto: https://uniroma1.zoom.us/j/94011137468?pwd=ODJzdmdBNnRYdGdPT2ZkT2NReXRxdz09
Syllabus della lezione.
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
Materiale di riferimento: Le slides sono disponibili in questa cartella
prof. Proietti Mattia - Link per seguire la lezione da remoto: https://uniroma1.zoom.us/j/94011137468?pwd=ODJzdmdBNnRYdGdPT2ZkT2NReXRxdz09
Syllabus della lezione.
E1. Ripasso ed esercizi sugli argomenti trattati
Materiale di riferimento: Le slides sono disponibili in questa cartella
prof. Proietti Mattia - Link per seguire la lezione da remoto: https://uniroma1.zoom.us/j/94011137468?pwd=ODJzdmdBNnRYdGdPT2ZkT2NReXRxdz09
Syllabus della lezione.
4. Python
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
Laboratori
L4.1. Esercizi di base
L4.2. TCP SYN con Scapy
L4.3. Port Scanner con Scapy
L4.4. Traceroute con Scapy
Materiale di riferimento: Le slides sono disponibili in questa cartella
prof. Proietti Mattia - Link per seguire la lezione da remoto: https://uniroma1.zoom.us/j/94011137468?pwd=ODJzdmdBNnRYdGdPT2ZkT2NReXRxdz09
Syllabus della lezione.
5. Socket
5.1. Introduzione
5.2. Socket UDP
5.3. Socket TCP
Materiale di riferimento e da leggere: Cap. 2.7 di [R1]. Le slides sono disponibili in questa cartella
prof. Proietti Mattia - Link per seguire la lezione da remoto: https://uniroma1.zoom.us/j/94011137468?pwd=ODJzdmdBNnRYdGdPT2ZkT2NReXRxdz09
Syllabus della lezione.
3. Filesystem
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
Materiale di riferimento e da leggere: Cap. 13 e 14 di [S1]. Le slides sono disponibili in questa cartella
prof. Proietti Mattia - Link per seguire la lezione da remoto: https://uniroma1.zoom.us/j/94011137468?pwd=ODJzdmdBNnRYdGdPT2ZkT2NReXRxdz09
Syllabus della lezione.
5. Socket
5.2. Socket UDP
5.3. Socket TCP
Laboratori
L5.1. UDP Pinger
L5.2. Phonebook
Materiale di riferimento: Le slides sono disponibili in questa cartella
prof. Proietti Mattia - Link per seguire la lezione da remoto: https://uniroma1.zoom.us/j/94011137468?pwd=ODJzdmdBNnRYdGdPT2ZkT2NReXRxdz09
Syllabus della lezione.
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
Materiale di riferimento e da leggere: Le slides sono disponibili in questa cartella. Cap 5.3 di [R2] e 4.2 di [R3]
prof. Proietti Mattia - Link per seguire la lezione da remoto: https://uniroma1.zoom.us/j/94011137468?pwd=ODJzdmdBNnRYdGdPT2ZkT2NReXRxdz09
Syllabus della lezione.
3. Filesystem
3.9. Metodi di Allocazione
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
Materiale di riferimento e da leggere: 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). Le slides sono disponibili in questa cartella.
prof. Proietti Mattia - Link per seguire la lezione da remoto: https://uniroma1.zoom.us/j/94011137468?pwd=ODJzdmdBNnRYdGdPT2ZkT2NReXRxdz09
Syllabus della lezione.
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
Laboratori
L4.1 Docker
L4.2 Dockerfile
L4.3 Docker Compose
Materiale di riferimento: Le slides sono disponibili in questa cartella
prof. Proietti Mattia - Link per seguire la lezione da remoto: https://uniroma1.zoom.us/j/94011137468?pwd=ODJzdmdBNnRYdGdPT2ZkT2NReXRxdz09
Syllabus della lezione.
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
Materiale di riferimento: Le slides sono disponibili in questa cartella
prof. Proietti Mattia - Link per seguire la lezione da remoto: https://uniroma1.zoom.us/j/94011137468?pwd=ODJzdmdBNnRYdGdPT2ZkT2NReXRxdz09
Syllabus della lezione.
Laboratori
L6.1 Google RPC in Python
Materiale di riferimento: Le slides sono disponibili in questa cartella
prof. Proietti Mattia - Link per seguire la lezione da remoto: https://uniroma1.zoom.us/j/94011137468?pwd=ODJzdmdBNnRYdGdPT2ZkT2NReXRxdz09
Ultima lezione del corso. Syllabus della lezione.
E2. Ripasso ed esercizi sugli argomenti trattati
Materiale di riferimento: Le slides sono disponibili in questa cartella