Primo modulo (SC1)
Secondo modulo (SC2)
Lezioni frontali
Venerdì 9 Marzo - lezione teorica (Aula 16 via Tiburtina)
- Processi e thread
- Process Control Block
- fork/wait
- resource ownership vs scheduling/execution
- schemi multi-threading e multi-processing
- user-level thread vs kernel-level thread
Lunedì 12 Marzo - lezione teorica (Aula Ginestra)
- Processi e thread
- Symmetric multiprocessing e tassonomia di Flynn
- POSIX Threads
- Concorrenza
- definizioni e concetti fondamentali (atomic operation, critical section, deadlock, etc)
- race conditions
- contention scenarios (competition, cooperation by sharing, cooperation by communication)
- supporto hardware per la mutua esclusione
Lunedì 19 Marzo - lezione teorica (Aula Ginestra)
- Concorrenza
- meccanismi software comuni per la concorrenza
- introduzione ai semafori (con pseudocodice)
- semafori strong vs weak
- mutua esclusione tramite semafori
- paradigma produttore/consumatore: infinite buffer, finite buffer, ordine delle operazioni di wait e signal
- implementazione dei semafori
- paradigma readers/writers
- monitors, message passing
Lunedì 26 Marzo - lezione teorica (Aula Ginestra)
- Networking
- Architettura di Internet e delle reti
- Gerarchie dei protocolli
- Il modello OSI
- Struttura a tre livelli: area applicativa, interoperabilità trasporto informazioni (trasporto+rete), infrastruttura di trasporto (network access+link)
- Cenni ai protocolli IP, TCP, UDP
- Approfondimento: Content Centric Network
Lunedì 9 Aprile - lezione teorica (Aula Gini + Aula Ginestra)
- Networking
- TCP/IP protocol architecture
- Differenze principali tra TCP e UDP
- Socket: astrazione, porte, primitive di trasporto, Berkeley sockets, configurazione e connessione (codice C), operazioni di lettura e scrittura
- Network adaptors: control status register, DMA vs programmed I/O, buffer descriptor list, relazione tra messaggi/pacchetti/frame, struttura di un interrupt handler
Lunedì 16 Aprile - lezione teorica (Aula Gini + Aula Ginestra)
- Concurrency
- Deadlock: actual vs potential deadlock, reusable vs consumable resources, condizioni dietro un deadlock
- Gestione dei deadlock: prevention, avoidance, detection (principi generali)
- Dining philosophers problem
- Algoritmo di Dekker per mutua esclusione tra due processi (con proof di mutual exclusion e no starvation)
- Algoritmo di Dijkstra per mutua esclusione tra N processi: assunzioni, ruolo di k, proof di mutual exclusion e no deadlock
Lunedì 23 Aprile - lezione teorica (Aula Gini + Aula Ginestra)
- Client/server computing
- Architettura client/server
- Applications: host-based processing, server-based processing, client-based processing, cooperative processing
- Three-tier architecture
- Introduzione a sistemi distribuiti e middleware
- Bakery algorithm di Lamport: assunzioni, running example, proof di mutual exclusion e no starvation
Lunedì 7 Maggio - lezione teorica (Aula Gini + Aula Ginestra)
- Client/server computing
- Service-oriented architecture
- Distributed message passing: principi e design (aspetti di reliability, blocking vs nonblocking)
- Remote procedure calls
- vantaggi da standardizzazione
- RPC stub e passaggio dei parametri
- design: persistent vs nonpersistent binding, synchronous vs asynchronous RPC, object-oriented mechanisms
- RPC call semantics: at least once, at most once, exactly once
- Clusters
- vantaggi in termini di scalability ed availability
- metodi di clustering: disk sharing, passive standby vs active secondary (tre modalità)
- gestione dei failure: highly available clusters vs fault-tolerant clusters
- load balancing, parallelismo, architettura e ruolo del middleware
- confronto con architetture SMP
Lunedì 14 Maggio - lezione teorica (Aula Ginestra)
- Il tempo nei sistemi distribuiti
- Physical time e logical time
- Clock fisico
- Drift, UTC, sincronizzazione interna ed esterna, correzione locale
- Algoritmi di Cristian e di Berkeley
- Network time protocol
- Clock logico
- Causal order, happened before relation
- Logical clock scalare
- Logical clock vettoriale
- Algoritmo di Ricart Agrawala per mutua esclusione
- ruolo della coordinazione rispetto ad estensioni dell'algoritmo di Lamport
- assunzioni, algoritmo, running example
- proof di mutua esclusione e no starvation
Lunedì 21 Maggio - lezione teorica (Aula Gini + Aula Ginestra)
- Security
- Elementi introduttivi
- CIA triad (confidentiality, availability, integrity) + authenticity & accountability
- Threats: unauthorized disclosure, deception, disruption, usurpation
- Attacchi passivi e attivi, intruder patterns
- Terminologia: backdoor, logic bomb, trojan horse, virus, worm, bot, rootkit
- Caratteristiche distintive di virus, worm, bot e rootkit
- Autenticazione
- Password-based: hashing, ruolo del salt, UNIX authentication
- Token-based: memory card, smart card
- Tecniche biometriche
- Access control: DAC/MAC/RBAC, extended access control matrix
- Principi di funzionamento di IDS e antivirus
Lunedì 28 Maggio - lezione teorica (Aula Ginestra)
- Memory corruption
- Cause e tipologie, memory safety dei linguaggi di programmazione
- Richiami di assembly x86: uso della stack, ruolo del frame pointer
- Stack overflow
- Definizione, analisi di un running example
- Exploit di non-control data, discussione altri possibili return targets
- Vettore di infezione tipico: NOP sled, shellcode, indirizzo dello shellcode
- Off-by-one attack (frame pointer overwrite)
- Function pointer overwrite
- Possibili contromisure
- Importanza del bounds checking
- Ruolo del programmatore: funzioni safe/unsafe e relativi miti
- Stack canaries
- Data Execution Prevention (attacchi: return into libc, return oriented programming)
- Address Space Layout Randomization
- Svolgimento esercizi d'esame su algoritmi di mutua esclusione
Esercitazioni
- [venerdì 16 marzo] processi e thread
- [venerdì 23 marzo] semafori: accesso a variabile condivisa, produttore/consumatore
- [venerdì 6 aprile] gestione degli errori con POSIX calls, semafori named per sincronizzazione inter-processo, produttore/consumatore con buffer su file
- [venerdì 13 aprile] esercizio di riepilogo sulla sincronizzazione intra-processo ed inter-processo
- [venerdì 20 aprile] descrittori UNIX e letture/scritture, copia di un file, scambio di messaggi via socket
- [venerdì 4 maggio] creazione socket ed instaurazione connessione in client e server
- [venerdì 11 maggio] host vs network byte order, realizzazione server multi-process e multi-thread
- [venerdì 18 maggio] pipe e FIFO
- [venerdì 25 maggio] esercizi di preparazione agli esami
[
A.A. 2014-2015 |
A.A. 2015-2016 |
A.A. 2016-2017 ]