Ritratto di gabriele.proiettimattia@uniroma1.it

Ricevimento

Il ricevimento studenti è il Martedì dalle 15 alle 16 su appuntamento (si prega di inviare email). La modalità di ricevimento è fisica o su Google Meet.

 

Curriculum docente

https://gpm.name/resume

 

Corsi

 

Reti e Sistemi Operativi (Sede Latina) 9 CFU 2023-24. 

Orario

Il corso si tiene interamente in Aula 4, dal 25/09/2023 al 22/12/2023, nei seguenti giorni

  • Lunedì 9-12
  • Venerdì 9-12
  • Venerdì 13-15

 

Link per lo streaming delle lezioni

https://uniroma1.zoom.us/j/94011137468?pwd=ODJzdmdBNnRYdGdPT2ZkT2NReXRxdz09

 

Sito web del corso

https://sites.google.com/view/reti-e-sistemi-operativi2023/home-page 

https://gpm.name/teaching/2023-rso/

 

Insegnamento Codice Anno Corso - Frequentare Bacheca
RETI E SISTEMI OPERATIVI 1035355 2023/2024

Ingegneria dell’Informazione (Sede di Latina)

Reti e Sistemi Operativi

Syllabus

Prof. Giuseppe Antonio Di Luna, Prof. Gabriele Proietti Mattia

 

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

  1. Introduzione

    1. Sistema operativo come manager di risorse

    2. Prinicipi di modularità, astrazione e layering

    3. Architettura di un calcolatore e macchina di von neuman

    4. Processi, Multiprogramming e Multitasking, interrupt e eccezioni

    5. Syscall, privilegi, e memoria virtuale

  2. System Calls e Architetture dei Sistemi Operativi

    1. Struttura di un sistema operativo - interfaccia, kernel, driver e moduli

    2. Servizi offerti da un sistema operativo

      1. Esecuzione, gestione e comunicazione dei processi; 

      2. IO e driver, filesystem, security, resource allocation;

    3. System Calls paradigma e funzionamento

    4. Rings e privilegi del sistema operativo

    5. Tipi di sistemi operativi: monolotici vs microkernel

  3. Processi e Thread

    1. Definizione precisa di processo, processo vs thread, ciclo di vita

    2. Creazione dei processi, fork()

    3. Comunicazione IPC locale; shared memories e pipe

  4. Concorrenza e Sincronizzazione

    1. Problematiche di sincronizzazione e concorrenza classiche

    2. Il problema della sezione critica

    3. Algoritimi per la sezione critica

    4. Mutex lock e semafori

    5. Deadlock - rilevazione e evitamento3

  5. Gestione della memoria

    1. Meccanismi basici di protezione

    2. Binding at loading, compile, and execution time.

    3. Paginazione

 

Modulo Sistemi Operativi B (3CFU) - Prof. Gabriele 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. Sosituzione 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

      5. Scheduling NVM

    3. Gestione dei Dispositivi di Massa

      1. Formattazione

      2. Partizioni e Volumi

      3. Cluster e Raw Disk

    4. Hardware I/O

      1. Introduzione

      2. Memory Mapped I/O

      3. Polling

      4. Interrupts

      5. Direct Memory Access (DMA)

    5. 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

    6. 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

    1. Macchine Virtuali

      1. Virtualizzazione

      2. Overview

      3. Benefici e Funzionalità

      4. Implementazione

    2. 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

Modulo Reti (3CFU) - Prof. Gabriele 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

  7. Sistemi Distribuiti

    1. Concetti di base

    2. Processi, canali, fallimenti, sistemi sincroni e asincroni

    3. Rilevamento dei guasti e sincronia

    4. Sincronizzazione degli orologi

    5. Clock Logici e Vector Clock

    6. Mutua Esclusione

    7. Broadcast Affidabile

    8. P2P Networks

    9. Publish/Subscribe

Laboratori

  1. -

  2. -

  3. Livello di Trasporto

    1. Wireshark

    2. netcat

    3. Packet sniffing

    4. nmap

    5. git

    6. Katharà

  4. Python 

    1. Esercizi di base

    2. TCP SYN con Scapy

    3. Port Scanner con Scapy

    4. Traceroute con Scapy

  5. Socket

    1. UDP Pinger

    2. Phonebook

  6. Middleware

    1. Google RPC in Python

  7. -

 

COMPLEMENTI DI PROGRAMMAZIONE 10606848 2022/2023
ADVANCED OPERATING SYSTEMS AND VIRTUALIZATION 1044414 2020/2021

Advanced Operating Systems and Virtualization (A.Y. 2020/2021)

Department of Computer, Control and Management Engineering “Antonio Ruberti”- Sapienza University of Rome

Teachers: Gabriele Proietti Mattia, Roberto Beraldi

Course Website: https://gpm.name/teaching/2021-aosv 

 

Syllabus

  1. The x86 Boot Process

    1. Step1: BIOS/UEFI

      1. Pre-Boot and Real Mode

      2. BIOS

    2. Step 2: Stage 1 Bootloader

      1. MBR 

      2. x86 Protected Mode

      3. x86 Memory Addressing

      4. x86 Privileges and Protection

      5. Paging

    3. Step 3: Stage 2 Bootloader

      1. GRUB/UEFI

      2. Multi-core Support

  2. Step 4: Kernel Boot 

    1. Initial Life of the Linux Kernel

    2. startup_32()

    3. start_kernel()

      1. Bootmem and Memblock Allocators

      2. Paging Introduction

      3. Paging Initialization

      4. TLB

      5. Final operations and recap

  3. Memory Management

    1. Memory Representation

    2. The Buddy System

    3. High Memory

    4. Memory Finalization

    5. Steady-state memory allocation

      1. Fast Allocations & Quicklists

      2. SLAB Allocator

      3. CPU Caches

      4. Large Allocations

    6. User & Kernel Space

  4. System Calls

    1. Introduction

    2. Handler / Dispatcher

    3. Invoking Process

      1. User Space Invoking process

      2. Kernel Wrapper Routines

      3. X86_64 Invoking Process

    4. vDSO

    5. Conclusions

  5. Interrupts

    1. Introduction

    2. IRQs and Inter-Processor Interrupts

    3. The IDT and the Activation Scheme

    4. Exception Handling

      1. Fixups and Page Fault Handler

    5. Interrupts Handling

      1. I/O Interrupts

      2. Inter-Processor Interrupts (IPIs)

    6. Software Interrupts (SoftIRQs) and Tasklets

    7. Work Queues

  6. Time Management

    1. Introduction

    2. Timekeeping Architecture

      1. Low-resolution Timers

      2. Generic Time Subsystem

    3. Watchdogs

  7. Concurrency in the Kernel

    1. Introduction

    2. Synchronization

      1. Per-CPU Variables

      2. Atomic operations

      3. Memory Barriers

      4. Spinlocks

      5. Seqlocks

      6. RCU

      7. Semaphores

  8. Virtual File System

    1. Introduction

    2. The Common File Model

      1. Operations

    3. Pathname Lookup

    4. Files

    5. The /proc filesystem

    6. The /sys filesystem

    7. Device Management

      1. Char Devices

      2. Block Devices

      3. Devices and VFS

      4. Classes

      5. Udev

  9. Userspace Initialization

    1. init

    2. runlevels/targets

      1. Systemd

    3. End of the boot process

  10. Process Management

    1. Process Control Block

      1. Accessing the PCB

    2. The fork()/exec() model

      1. Kernel Threads

    3. Out Of Memory (OOM) Killer 

    4. Process Starting

      1. The ELF Format

      2. Dynamic Linking

      3. Initial Steps of Programs’ Life

  11. Scheduling

    1. Introduction

    2. Priorities and Weights

    3. Scheduler Core

      1. Wait Queues

      2. Scheduler Entry Point

      3. Scheduler Algorithms

    4. Context Switch

  12. Virtualization

    1. Introduction

    2. Software-based Virtualization

      1. VirtualBox

    3. Paravirtualization

    4. Hardware-assisted Virtualization

      1. Virtualization of Memory

    5. Linux Containers

      1. cgroups

      2. namespaces

      3. Container Runtimes and Docker

  13. Security

    1. Introduction

    2. User Authentication

    3. Internet Security

    4. Secure Operating Systems

  14. Epilogue

    1. Introduction

    2. Linux History

    3. Kernels

Labs/Hands-on

  1. Git: an essential guide

  2. Building the Kernel

  3. ASM in C

  4. Kernel Modules

  5. Kernel Messaging & Debugging

  6. Final project presentation and organization

  7. Kernel Data Structures

  8. Misc devices, ioctl and /proc filesystem

  9. Function Hooking: Kprobes and ftrace

  10. Rootkit Analysis

ADVANCED OPERATING SYSTEMS AND VIRTUALIZATION 1044414 2020/2021

Advanced Operating Systems and Virtualization (A.Y. 2020/2021)

Department of Computer, Control and Management Engineering “Antonio Ruberti”- Sapienza University of Rome

Teachers: Gabriele Proietti Mattia, Roberto Beraldi

Course Website: https://gpm.name/teaching/2021-aosv 

 

Syllabus

  1. The x86 Boot Process

    1. Step1: BIOS/UEFI

      1. Pre-Boot and Real Mode

      2. BIOS

    2. Step 2: Stage 1 Bootloader

      1. MBR 

      2. x86 Protected Mode

      3. x86 Memory Addressing

      4. x86 Privileges and Protection

      5. Paging

    3. Step 3: Stage 2 Bootloader

      1. GRUB/UEFI

      2. Multi-core Support

  2. Step 4: Kernel Boot 

    1. Initial Life of the Linux Kernel

    2. startup_32()

    3. start_kernel()

      1. Bootmem and Memblock Allocators

      2. Paging Introduction

      3. Paging Initialization

      4. TLB

      5. Final operations and recap

  3. Memory Management

    1. Memory Representation

    2. The Buddy System

    3. High Memory

    4. Memory Finalization

    5. Steady-state memory allocation

      1. Fast Allocations & Quicklists

      2. SLAB Allocator

      3. CPU Caches

      4. Large Allocations

    6. User & Kernel Space

  4. System Calls

    1. Introduction

    2. Handler / Dispatcher

    3. Invoking Process

      1. User Space Invoking process

      2. Kernel Wrapper Routines

      3. X86_64 Invoking Process

    4. vDSO

    5. Conclusions

  5. Interrupts

    1. Introduction

    2. IRQs and Inter-Processor Interrupts

    3. The IDT and the Activation Scheme

    4. Exception Handling

      1. Fixups and Page Fault Handler

    5. Interrupts Handling

      1. I/O Interrupts

      2. Inter-Processor Interrupts (IPIs)

    6. Software Interrupts (SoftIRQs) and Tasklets

    7. Work Queues

  6. Time Management

    1. Introduction

    2. Timekeeping Architecture

      1. Low-resolution Timers

      2. Generic Time Subsystem

    3. Watchdogs

  7. Concurrency in the Kernel

    1. Introduction

    2. Synchronization

      1. Per-CPU Variables

      2. Atomic operations

      3. Memory Barriers

      4. Spinlocks

      5. Seqlocks

      6. RCU

      7. Semaphores

  8. Virtual File System

    1. Introduction

    2. The Common File Model

      1. Operations

    3. Pathname Lookup

    4. Files

    5. The /proc filesystem

    6. The /sys filesystem

    7. Device Management

      1. Char Devices

      2. Block Devices

      3. Devices and VFS

      4. Classes

      5. Udev

  9. Userspace Initialization

    1. init

    2. runlevels/targets

      1. Systemd

    3. End of the boot process

  10. Process Management

    1. Process Control Block

      1. Accessing the PCB

    2. The fork()/exec() model

      1. Kernel Threads

    3. Out Of Memory (OOM) Killer 

    4. Process Starting

      1. The ELF Format

      2. Dynamic Linking

      3. Initial Steps of Programs’ Life

  11. Scheduling

    1. Introduction

    2. Priorities and Weights

    3. Scheduler Core

      1. Wait Queues

      2. Scheduler Entry Point

      3. Scheduler Algorithms

    4. Context Switch

  12. Virtualization

    1. Introduction

    2. Software-based Virtualization

      1. VirtualBox

    3. Paravirtualization

    4. Hardware-assisted Virtualization

      1. Virtualization of Memory

    5. Linux Containers

      1. cgroups

      2. namespaces

      3. Container Runtimes and Docker

  13. Security

    1. Introduction

    2. User Authentication

    3. Internet Security

    4. Secure Operating Systems

  14. Epilogue

    1. Introduction

    2. Linux History

    3. Kernels

Labs/Hands-on

  1. Git: an essential guide

  2. Building the Kernel

  3. ASM in C

  4. Kernel Modules

  5. Kernel Messaging & Debugging

  6. Final project presentation and organization

  7. Kernel Data Structures

  8. Misc devices, ioctl and /proc filesystem

  9. Function Hooking: Kprobes and ftrace

  10. Rootkit Analysis