Additions:
~- [venerdì 18 maggio] pipe e FIFO
~- [venerdì 25 maggio] esercizi di preparazione agli esami
Additions:
~- [venerdì 16 marzo] processi e thread
~- [venerdì 23 marzo] semafori: accesso a variabile condivisa, produttore/consumatore
Deletions:
~- [venerdì 17 marzo] processi e thread
~- [venerdì 24 marzo] semafori: accesso a variabile condivisa, produttore/consumatore
Additions:
~~- 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
Deletions:
~~- proof di mutua esclusione e no starvation
Additions:
Lunedì 14 Maggio - lezione teorica (Aula Ginestra)
Additions:
~~~- confronto con architetture SMP
~- 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
Deletions:
~~~- confronto con architetture SMP
Additions:
**Lezioni frontali**
**Esercitazioni**
Deletions:
Esercitazioni
No differences.
Additions:
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
~- [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
Additions:
Esercitazioni
~- [venerdì 17 marzo] processi e thread
~- [venerdì 24 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
Additions:
~~- 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
Deletions:
~~- Socket
~~- Network adaptors
Additions:
~~- 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
~~- Socket
~~- Network adaptors
Deletions:
~~- paradigma produttore/consumatore
Additions:
===Secondo modulo (SC2)===
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
Deletions:
===Secondo modulo (SC2)===
TBA
Additions:
~- [[DiarioLezioni1718C1 Diario delle lezioni Canale 1 - Demetrescu]]
~- [[DiarioLezioni1718C2 Diario delle lezioni Canale 2 - Coppa]]
Deletions:
~- [[DiarioLezioni1718C1 Diario delle lezioni Canale 1]]
Additions:
~- [[DiarioLezioni1718C1 Diario delle lezioni Canale 1]]
Deletions:
==Lunedì 25 settembre 2017 (Lezione 1 - 150 min) - Demetrescu==
~- Informazioni preliminari sul corso
~- Astrazioni nei sistemi di calcolo e Instruction Set Architecture (ISA), linguaggio macchina e linguaggio assembly
~- Pipeline di compilazione C: compilatore -> assemblatore -> linker, opzioni corrispondenti in ##gcc## ed estensioni dei file intermedi (##.c##, ##.s##, ##.o##)
~- Comando ##file## per ispezionare il tipo di file
~- Disassembler: ##objdump## e opzione ##-d##
~- Registri IA32 come contenitori per variabili: registri dati A, B, C, D, DI, SI
~- Sintassi Assembly AT&T: operandi immediati ($10, $0x0F, ecc.), nomi dei registri (%eax, %ax, %al, ecc.), suffissi delle istruzioni (b, w, l, ecc.)
~- Traduzione C -> Assembly IA32
~~- Corrispondenza tra tipi di dato C (char, short, int, ecc.) e tipi di dato macchina (Byte, Word, Long Word, ecc.)
~~- Istruzione di assegnamento: istruzione movimento dati MOV (=)
~~- Operatori aritmetico-logici: istruzioni INC (""++""), ADD (+)
Additions:
==Lunedì 25 settembre 2017 (Lezione 1 - 150 min) - Demetrescu==
~- Informazioni preliminari sul corso
~- Astrazioni nei sistemi di calcolo e Instruction Set Architecture (ISA), linguaggio macchina e linguaggio assembly
~- Pipeline di compilazione C: compilatore -> assemblatore -> linker, opzioni corrispondenti in ##gcc## ed estensioni dei file intermedi (##.c##, ##.s##, ##.o##)
~- Comando ##file## per ispezionare il tipo di file
~- Disassembler: ##objdump## e opzione ##-d##
~- Registri IA32 come contenitori per variabili: registri dati A, B, C, D, DI, SI
~- Sintassi Assembly AT&T: operandi immediati ($10, $0x0F, ecc.), nomi dei registri (%eax, %ax, %al, ecc.), suffissi delle istruzioni (b, w, l, ecc.)
~- Traduzione C -> Assembly IA32
~~- Corrispondenza tra tipi di dato C (char, short, int, ecc.) e tipi di dato macchina (Byte, Word, Long Word, ecc.)
~~- Istruzione di assegnamento: istruzione movimento dati MOV (=)
~~- Operatori aritmetico-logici: istruzioni INC (""++""), ADD (+)
No differences.
Additions:
TBA
Deletions:
**Canali**:
~-[[DiarioLezioni1617AO Canale AO (Demetrescu/Coppa)]]
~-[[DiarioLezioni1617PZ Canale PZ (D'Elia)]]
Lunedì 20 febbraio 2017 - lezione teorica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/%5BSC2-2017-02%5D%20Processes%20and%20threads.pdf slide di riferimento]])
~- Riepilogo sui processi
Venerd' 24 febbraio 2017 - lezione teorica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/%5BSC2-2017-02%5D%20Processes%20and%20threads.pdf slide di riferimento]])
~- Thread
Lunedì 27 febbraio 2017 - lezione teorica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/%5BSC2-2017-02%5D%20Processes%20and%20threads.pdf slide di riferimento]])
~- Symmetric multiprocessing
~- Microkernel
~- Pthreads
Mercoledì 1 marzo 2017 - lezione pratica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/lab/01/%5Bsc2-2017-lab-01%5D%20processi%20e%20thread.pdf slide diriferimento]])
~- Overhead: processi vs thread
~- Thread concorrenti che accedono a variabili condivise: problematiche
Venerdì 3 marzo 2017 - lezione teorica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/%5BSC2-2017-03%5D%20Concorrenza.pdf slide di riferimento]])
~- Concorrenza
~- Mutua esclusione
~- Supporto Hardware per la mutua esclusione
Lunedì 6 marzo 2017 - lezione teorica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/%5BSC2-2017-03%5D%20Concorrenza.pdf slide di riferimento]], [[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/mutua_esclusione.pdf dispensa su mutua esclusione]])
~- Algoritmo di Dijkstra per la mutua esclusione
~- Semafori
Venerdì 10 marzo 2017 - lezione teorica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/mutua_esclusione.pdf dispensa su mutua esclusione]], [[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/dijkstra/ esempi sull'algoritmo di Dijkstra]])
~- Approfondimenti sull'algoritmo di Dijkstra (ruolo di k, no-deadlock, starvation)
Lunedì 13 marzo 2017 - lezione teorica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/mutua_esclusione.pdf dispensa su mutua esclusione]])
~- Esercizi sull'algoritmo di Dijkstra
~- Algoritmo del Panettiere di Lamport
Mercoledì 15 marzo 2017 - lezione pratica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/lab/02/%5Bsc2-2017-lab-02%5D%20concorrenza.pdf slide di riferimento]])
~- Libreria pthread per i semafori in C
~- Accesso sezione critica in mutua esclusione (misurazione overhead semafori)
~- Accesso in mutua esclusione a N risorse
Venerdì 17 marzo 2017 - lezione teorica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/%5BSC2-2017-03%5D%20Concorrenza.pdf slide di riferimento]])
~- Produttore/Consumatore
Lunedì 20 marzo 2017 - lezione teorica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/%5BSC2-2017-03%5D%20Concorrenza.pdf slide di riferimento]])
~- Produttore/Consumatore
~- Monitor
~- Message Passing
Mercoledì 22 marzo 2017 - lezione pratica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/lab/03/%5Bsc2-2017-lab-03%5D%20sincronizzazione%20inter-processo.pdf slide di riferimento]])
~- Gestione degli errori
~- Sincronizzazione inter-processo
Venerdì 24 marzo 2017 - lezione teorica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/%5BSC2-2017-03%5D%20Concorrenza.pdf slide di riferimento]])
~- Readers/Writers
Lunedì 27 marzo 2017 - lezione teorica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/%5BSC2-2017-04%5D%20Rete.pdf slide di riferimento]])
~- Architettura di Internet: Internet service providers, Internet exchange points, architettura a tre livelli
Mercoledì 29 marzo 2017 - lezione pratica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/lab/04/%5Bsc2-2017-lab-04%5D%20riepilogo%20processi%2C%20thread%20e%20semafori.pdf slide di riferimento]])
~- Esercizi di riepilogo su processi, thread e semafori
Venerdì 31 marzo 2017 - lezione teorica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/%5BSC2-2017-04%5D%20Rete.pdf slide di riferimento]])
~- Richiami di TCP/IP
Lunedì 3 aprile 2017 - lezione teorica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/%5BSC2-2017-04%5D%20Rete.pdf slide di riferimento]])
~- Socket
Mercoledì 5 aprile 2017 - lezione pratica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/lab/05/%5Bsc2-2017-lab-05%5D%20produttore-consumatore.pdf slide di riferimento]])
~- Produttore/Consumatore
Venerdì 7 aprile 2017 - lezione teorica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/%5BSC2-2017-04%5D%20Rete.pdf slide di riferimento]])
~- Network Adaptors
Lunedì 10 aprile 2017 - lezione teorica
~- Introduzione ai sistemi distribuiti ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/%5BSC2-2017-05%5D%20Introduzione%20ai%20sistemi%20distribuiti.pdf slide di riferimento]])
~- Client-server computing ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/%5BSC2-2017-05%5D%20Client-Server%20computing%2C%20RPC.pdf slide di riferimento]])
Mercoledì 12 aprile 2017 - lezione pratica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/lab/06/%5Bsc2-2017-lab-06%5D%20input-output%20su%20socket.pdf slide di riferimento]])
~- Input/Output su Socket
Mercoledì 19 aprile 2017 - lezione pratica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/lab/07/%5Bsc2-2017-lab-07%5D%20client-server%20con%20socket.pdf slide di riferimento]])
~- Client/Server con Socket
Venerdì 21 aprile 2017 - lezione teorica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/%5BSC2-2017-05%5D%20Client-Server%20computing%2C%20RPC.pdf slide di riferimento]])
~- Remote Procedure Calls
Mercoledì 26 aprile 2017 - lezione pratica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/lab/08/%5Bsc2-2017-lab-08%5D%20server%20multi-process%20e%20multi-thread.pdf slide di riferimento]])
~- Server multi-process/multi-thread
Venerdì 28 aprile 2017 - lezione teorica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/%5BSC2-2017-05%5D%20Client-Server%20computing%2C%20RPC.pdf slide di riferimento]])
~- Remote Procedure Calls
Mercoledì 3 maggio 2017 - lezione pratica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/lab/09/%5Bsc2-2017-lab-09%5D%20Approfondimento%20su%20letture%20e%20scritture.pdf slide di riferimento]])
~- Approfondimento su letture e scritture
Venerdì 5 maggio 2017 - lezione teorica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/%5BSC2-2017-06%5D%20Pipes.pdf slide di riferimento]])
~- Pipe e FIFO
Lunedì 8 maggio 2017 - lezione teorica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/%5BSC2-2017-05%5D%20Client-Server%20computing%2C%20RPC.pdf slide di riferimento]])
~- Remote Procedure Calls
Mercoledì 10 maggio 2017 - lezione pratica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/lab/10/%5Bsc2-2017-lab-10%5D%20Pipe%20e%20FIFO.pdf slide di riferimento]])
~- Pipe e FIFO
Venerdì 12 maggio 2017 - lezione teorica
~- Remote Procedure Calls ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/%5BSC2-2017-05%5D%20Client-Server%20computing%2C%20RPC.pdf slide di riferimento]])
~- Tempo logico nei sistemi distributi ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/%5BSC2-2017-07%5D%20Logical%20time%2C%20Ricart-Agrawala%20algorithm.pdf slide di riferimento]])
Lunedì 15 maggio 2017 - lezione teorica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/%5BSC2-2017-07%5D%20Logical%20time%2C%20Ricart-Agrawala%20algorithm.pdf slide di riferimento]], [[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/mutua_esclusione.pdf dispensa su mutua esclusione]])
~- Algoritmo di Ricart-Agrawala
Mercoledì 17 maggio 2017 - lezione pratica
~- Simulazione d'esame
Venerdì 19 maggio 2017 - lezione teorica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/%5BSC2-2017-08%5D%20Security.pdf slide di riferimento]])
~- Introduzione alla Cyber Security
Lunedì 22 maggio 2017 - lezione teorica ([[http://www.dis.uniroma1.it/~aniello/sc2/aa1617/teoria/%5BSC2-2017-08%5D%20Security.pdf slide di riferimento]])
~- Buffer Overflow
Additions:
[ [[DiarioLezioni1415 A.A. 2014-2015]] | [[DiarioLezioni1516 A.A. 2015-2016]] | [[DiarioLezioni1617 A.A. 2016-2017]] ]
Deletions:
[ [[DiarioLezioni1415 A.A. 2014-2015]] | [[DiarioLezioni1516 A.A. 2015-2016]] ]