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
-
Introduzione
-
Sistema operativo come manager di risorse
-
Prinicipi di modularità, astrazione e layering
-
Architettura di un calcolatore e macchina di von neuman
-
Processi, Multiprogramming e Multitasking, interrupt e eccezioni
-
Syscall, privilegi, e memoria virtuale
-
System Calls e Architetture dei Sistemi Operativi
-
Struttura di un sistema operativo - interfaccia, kernel, driver e moduli
-
Servizi offerti da un sistema operativo
-
Esecuzione, gestione e comunicazione dei processi;
-
IO e driver, filesystem, security, resource allocation;
-
System Calls paradigma e funzionamento
-
Rings e privilegi del sistema operativo
-
Tipi di sistemi operativi: monolotici vs microkernel
-
Processi e Thread
-
Definizione precisa di processo, processo vs thread, ciclo di vita
-
Creazione dei processi, fork()
-
Comunicazione IPC locale; shared memories e pipe
-
Concorrenza e Sincronizzazione
-
Problematiche di sincronizzazione e concorrenza classiche
-
Il problema della sezione critica
-
Algoritimi per la sezione critica
-
Mutex lock e semafori
-
Deadlock - rilevazione e evitamento3
-
Gestione della memoria
-
Meccanismi basici di protezione
-
Binding at loading, compile, and execution time.
-
Paginazione
Modulo Sistemi Operativi B (3CFU) - Prof. Gabriele 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
-
Sosituzione 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
-
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
-
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() e sbrk()
-
–
-
–
-
Virtualizzazione e Container
-
L4.1 Docker
-
L4.2 Dockerfile
-
L4.3 Docker Compose
Modulo Reti (3CFU) - Prof. Gabriele 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
-
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
-
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
-
Sistemi Distribuiti
-
Concetti di base
-
Processi, canali, fallimenti, sistemi sincroni e asincroni
-
Rilevamento dei guasti e sincronia
-
Sincronizzazione degli orologi
-
Clock Logici e Vector Clock
-
Mutua Esclusione
-
Broadcast Affidabile
-
P2P Networks
-
Publish/Subscribe
Laboratori
-
-
-
-
-
Livello di Trasporto
-
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
-
-
|
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
-
The x86 Boot Process
-
Step1: BIOS/UEFI
-
Pre-Boot and Real Mode
-
BIOS
-
Step 2: Stage 1 Bootloader
-
MBR
-
x86 Protected Mode
-
x86 Memory Addressing
-
x86 Privileges and Protection
-
Paging
-
Step 3: Stage 2 Bootloader
-
GRUB/UEFI
-
Multi-core Support
-
Step 4: Kernel Boot
-
Initial Life of the Linux Kernel
-
startup_32()
-
start_kernel()
-
Bootmem and Memblock Allocators
-
Paging Introduction
-
Paging Initialization
-
TLB
-
Final operations and recap
-
Memory Management
-
Memory Representation
-
The Buddy System
-
High Memory
-
Memory Finalization
-
Steady-state memory allocation
-
Fast Allocations & Quicklists
-
SLAB Allocator
-
CPU Caches
-
Large Allocations
-
User & Kernel Space
-
System Calls
-
Introduction
-
Handler / Dispatcher
-
Invoking Process
-
User Space Invoking process
-
Kernel Wrapper Routines
-
X86_64 Invoking Process
-
vDSO
-
Conclusions
-
Interrupts
-
Introduction
-
IRQs and Inter-Processor Interrupts
-
The IDT and the Activation Scheme
-
Exception Handling
-
Fixups and Page Fault Handler
-
Interrupts Handling
-
I/O Interrupts
-
Inter-Processor Interrupts (IPIs)
-
Software Interrupts (SoftIRQs) and Tasklets
-
Work Queues
-
Time Management
-
Introduction
-
Timekeeping Architecture
-
Low-resolution Timers
-
Generic Time Subsystem
-
Watchdogs
-
Concurrency in the Kernel
-
Introduction
-
Synchronization
-
Per-CPU Variables
-
Atomic operations
-
Memory Barriers
-
Spinlocks
-
Seqlocks
-
RCU
-
Semaphores
-
Virtual File System
-
Introduction
-
The Common File Model
-
Operations
-
Pathname Lookup
-
Files
-
The /proc filesystem
-
The /sys filesystem
-
Device Management
-
Char Devices
-
Block Devices
-
Devices and VFS
-
Classes
-
Udev
-
Userspace Initialization
-
init
-
runlevels/targets
-
Systemd
-
End of the boot process
-
Process Management
-
Process Control Block
-
Accessing the PCB
-
The fork()/exec() model
-
Kernel Threads
-
Out Of Memory (OOM) Killer
-
Process Starting
-
The ELF Format
-
Dynamic Linking
-
Initial Steps of Programs’ Life
-
Scheduling
-
Introduction
-
Priorities and Weights
-
Scheduler Core
-
Wait Queues
-
Scheduler Entry Point
-
Scheduler Algorithms
-
Context Switch
-
Virtualization
-
Introduction
-
Software-based Virtualization
-
VirtualBox
-
Paravirtualization
-
Hardware-assisted Virtualization
-
Virtualization of Memory
-
Linux Containers
-
cgroups
-
namespaces
-
Container Runtimes and Docker
-
Security
-
Introduction
-
User Authentication
-
Internet Security
-
Secure Operating Systems
-
Epilogue
-
Introduction
-
Linux History
-
Kernels
Labs/Hands-on
-
Git: an essential guide
-
Building the Kernel
-
ASM in C
-
Kernel Modules
-
Kernel Messaging & Debugging
-
Final project presentation and organization
-
Kernel Data Structures
-
Misc devices, ioctl and /proc filesystem
-
Function Hooking: Kprobes and ftrace
-
Rootkit Analysis
|
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
-
The x86 Boot Process
-
Step1: BIOS/UEFI
-
Pre-Boot and Real Mode
-
BIOS
-
Step 2: Stage 1 Bootloader
-
MBR
-
x86 Protected Mode
-
x86 Memory Addressing
-
x86 Privileges and Protection
-
Paging
-
Step 3: Stage 2 Bootloader
-
GRUB/UEFI
-
Multi-core Support
-
Step 4: Kernel Boot
-
Initial Life of the Linux Kernel
-
startup_32()
-
start_kernel()
-
Bootmem and Memblock Allocators
-
Paging Introduction
-
Paging Initialization
-
TLB
-
Final operations and recap
-
Memory Management
-
Memory Representation
-
The Buddy System
-
High Memory
-
Memory Finalization
-
Steady-state memory allocation
-
Fast Allocations & Quicklists
-
SLAB Allocator
-
CPU Caches
-
Large Allocations
-
User & Kernel Space
-
System Calls
-
Introduction
-
Handler / Dispatcher
-
Invoking Process
-
User Space Invoking process
-
Kernel Wrapper Routines
-
X86_64 Invoking Process
-
vDSO
-
Conclusions
-
Interrupts
-
Introduction
-
IRQs and Inter-Processor Interrupts
-
The IDT and the Activation Scheme
-
Exception Handling
-
Fixups and Page Fault Handler
-
Interrupts Handling
-
I/O Interrupts
-
Inter-Processor Interrupts (IPIs)
-
Software Interrupts (SoftIRQs) and Tasklets
-
Work Queues
-
Time Management
-
Introduction
-
Timekeeping Architecture
-
Low-resolution Timers
-
Generic Time Subsystem
-
Watchdogs
-
Concurrency in the Kernel
-
Introduction
-
Synchronization
-
Per-CPU Variables
-
Atomic operations
-
Memory Barriers
-
Spinlocks
-
Seqlocks
-
RCU
-
Semaphores
-
Virtual File System
-
Introduction
-
The Common File Model
-
Operations
-
Pathname Lookup
-
Files
-
The /proc filesystem
-
The /sys filesystem
-
Device Management
-
Char Devices
-
Block Devices
-
Devices and VFS
-
Classes
-
Udev
-
Userspace Initialization
-
init
-
runlevels/targets
-
Systemd
-
End of the boot process
-
Process Management
-
Process Control Block
-
Accessing the PCB
-
The fork()/exec() model
-
Kernel Threads
-
Out Of Memory (OOM) Killer
-
Process Starting
-
The ELF Format
-
Dynamic Linking
-
Initial Steps of Programs’ Life
-
Scheduling
-
Introduction
-
Priorities and Weights
-
Scheduler Core
-
Wait Queues
-
Scheduler Entry Point
-
Scheduler Algorithms
-
Context Switch
-
Virtualization
-
Introduction
-
Software-based Virtualization
-
VirtualBox
-
Paravirtualization
-
Hardware-assisted Virtualization
-
Virtualization of Memory
-
Linux Containers
-
cgroups
-
namespaces
-
Container Runtimes and Docker
-
Security
-
Introduction
-
User Authentication
-
Internet Security
-
Secure Operating Systems
-
Epilogue
-
Introduction
-
Linux History
-
Kernels
Labs/Hands-on
-
Git: an essential guide
-
Building the Kernel
-
ASM in C
-
Kernel Modules
-
Kernel Messaging & Debugging
-
Final project presentation and organization
-
Kernel Data Structures
-
Misc devices, ioctl and /proc filesystem
-
Function Hooking: Kprobes and ftrace
-
Rootkit Analysis
|