Primo modulo (SC1) A.A. 2015-2016
Martedì 29 settembre 2015 (90 min)
-  Panoramica del corso e suo inquadramento nell'ambito complessivo degli esami di informatica del corso di laurea
-  Introduzione ai sistemi di calcolo: sistemi a nodo singolo e multi-nodo
-  Esempio di come l'architettura del sistema impatta sulle prestazioni: scansione per righe e per colonne di una matrice
-  Materiale didattico per la lezione: 
-  Appunti della lezione presi in classe
-  Capitolo 1 dispensa
 
Giovedì 1 ottobre 2015 (180 min)
-  Struttura generale di un calcolatore basato sull'architettura di Von Neumann: CPU, bus, I/O bridge, memoria, controller e adattatori
-  Nozioni di controllo, program counter, registri, unità aritmetico-logica
-  Linguaggi di alto e di basso livello
-  Linguaggio assembly e linguaggio macchina
-  Stadi della compilazione di un programma C: preprocessamento, parsing e compilazione in linguaggio assembly, compilazione in linguaggio macchina, linking
-  Toolchain gcc: cpp, cc1, as, ld
-  Analisi di file ELF (file oggetto, file eseguibili) mediante il comando objdump: disassemblamento di codice macchina x86
-  Materiale didattico per la lezione: 
-  Appunti della lezione presi in classe
-  Capitoli 1 e 2 dispensa
 
Martedì 6 ottobre 2015 (90 min)
-  Anatomia di un processo in ambiente Linux/UNIX: code, data, heap, stack. 
-  Distinzione tra memoria logica (o virtuale) di un processo e memoria fisica.
-  Materiale didattico per la lezione: 
-  Appunti della lezione presi in classe
-  Capitolo 3 dispensa
 
Giovedì 8 ottobre 2015 (180 min)
-  Astrazioni nei sistemi di calcolo: memoria e Instruction Set Architecture (ISA)
-  Registri IA32 come contenitori per variabili: registri IP (program counter), SP (stack pointer) e registri dati A, B, C, D, DI, SI, BP
-  Sintassi Assembly AT&T: operandi immediati ($10, $0xCAFE, 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 (++), DEC (--), ADD (+), SUB (-), IMUL (*), NEG (-), AND (&), OR (|), XOR (^), NOT (~)
-  Esempi di traduzione di assegnamenti e calcolo di espressioni aritmetiche
 
-  Materiale didattico per la lezione: 
Martedì 13 ottobre 2015 (90 min)
-  Accesso a variabili scalari e array in memoria con indice costante: 
-  operandi con indirizzamento di tipo indiretto (reg) 
-  operandi con indirizzamento base con spiazzamento d(reg)
 
-  Vincolo IA32 per cui non si possono avere due operandi sorgente e destinazione simultaneamente in memoria
-  Accesso ai parametri passati a una funzione: indirizzamento relativo al registro esp.
-  Esempi di traduzione da C a IA32: 
-  funzione int somma(int x, int y) che somma due interi
-  funzione void incrementa(int* p) che incrementa un oggetto il cui indirizzo è passato per parametro.
 
-  Materiale didattico per la lezione: 
-  Appunti della lezione presi in classe
-  Capitolo 4 dispensa
 
Giovedì 22 ottobre 2015 (180 min)
-  Istruzioni di salto incondizionato: JMP
-  Notazione R[reg] e M[addr] per descrivere l'effetto delle istruzioni IA32 sui registri e sulla memoria
-  Esercizi svolti in classe
-  Presentazione corso di laurea e corsi a scelta del terzo anno
-  Materiale didattico per la lezione: 
-  Appunti della lezione presi in classe
-  Capitolo 4 dispensa
 
Martedì 27 ottobre 2015 (90 min)
-  Istruzione di salto condizionato jcc
-  Codici di condizione: flag ZF, SF, OF, CF e registro EFLAGS
-  Traduzione dei costrutti if e if ... else da C a IA32
-  Esercizi svolti in classe: massimo di due interi con if e if ... else
-  Materiale didattico per la lezione: 
Giovedì 29 ottobre 2015 (180 min)
-  Registri caller-save (A, C, D) e callee-save (B, DI, SI, BP, SP)
-  Salvataggio dei registri: istruzioni push e pop
-  Esempio: funzione di swap di due oggetti short in memoria
-  Accesso ad array con indice generico: indirizzamento (base, indice, scala)
-  Traduzione del costrutto while da C a IA32
-  Esempi: fattoriale di un numero, somma elementi di un array di short, ricerca sequenziale in un array di short
-  Materiale didattico per la lezione: 
-  Appunti della lezione presi in classe
-  Capitolo 4 dispensa
 
Giovedì 5 novembre 2015 (180 min)
-  Conversione di tipo: istruzioni movs e movz
-  Calcolo di indirizzi: istruzione lea
-  Confronto di un operando con zero: istruzione test
-  Esercizi svolti in classe
-  Materiale didattico per la lezione: 
-  Appunti della lezione presi in classe
-  Capitolo 4 dispensa
 
Giovedì 12 novembre 2015 (180 min)
-  Istruzione cmov
-  Istruzione test
-  Forme di indirizzamento a memoria
-  Chiamate a funzione
-  Passaggio dei parametri
Giovedì 19 novembre 2015 (180 min)
-  schema generale definizione funzione IA32
-  Inizio seconda parte del corso
-  ottimizzazione programmi
-  pipelining
-  riduzione numero delle istruzioni (constant folding/propagation, common subexpression elimination)
Martedì 24 novembre (90 min)
-  dead code elimination
-  ottimizzazione cicli (loop invariant code motion, loop fusion, loop unrolling)
-  ottimizzazione funzioni (function inlining, tail call optimization)
-  ottimizzazione rimpiazzo istruzioni costose con meno costose (strength reduction)
Giovedì 26 novembre 2015 (180 min)
-  register allocation
-  ottimizzazione accessi a memoria mediante allineamento dati
-  performance profiler
-  legge di Pareto
Giovedì 3 dicembre 2015 (180 min)
-  Legge di Amdahl
-  Utilizzo tool gprof
-  Tempi di latenza
-  Introduzione cache
Giovedì 10 dicembre 2015 (180 min)
-  Cache hit/miss
-  Località spaziale e temporale
-  Pattern di accesso a memoria
-  Cache
-  Tipi di cache (indirizzamento diretto, associativa a k vie, completamente associativa)
-  Tipi di cache miss (cold, capacity, conflict)
 
Giovedì 17 dicembre 2015 (180 min)
-  Mapping degli indirizzi logici su quelli fisici
-  Funzionamento sistema in memoria virtuale paginata
-  Tabella delle pagine
-  Usi della memoria virtuale (protezione, condivisione, caching verso disco)
Lunedì 21 dicembre 2015 (90 min)
-  Working set di un programma
-  Trashing nella memoria virtuale
-  Frammentazione interna ed esterna della memoria
-  Cenni al funzionamento dell'allocatore di memoria malloc/free
-  Flusso del controllo eccezionale: interruzioni
-  Interrupt software e hardware
-  Context switch
-  Multiprogrammazione e time-sharing
-  Auguri di Natale!
Secondo modulo (SC2) A.A. 2015-2016
Venerdi 26 Febbraio e Venerdi' 4 Marzo 2016 (360 min): Testo di Riferimento W. Stallings "Operating Systems" (capitoli 3 e 4)
-  Panoramica del corso e suo inquadramento nell'ambito complessivo degli esami di informatica del corso di laurea
-  Processi e Multi processing
-  Thread e Multitreading
-  Introduzione alle macchine parallele: Tassonomia di Flynn e Sistemi Paralleli
-  Introduzione all'architettura di un kernel di SO: Microkernel
-  Pthread: esempi di programmazione
Venerdi 11 Marzo e Venerdi' 17 Marzo 2016 (360 min): Testo di Riferimento W. Stallings "Operating Systems" (capitolo 5)  Slide del docente 
-  Concorrenza e Sincronizzazione
-  Mutua Esclusione, Algoritmo di Dijkstra e Algoritmo del Panettiere  note del docente
-  Semafori e Monitor 
-  Produttore/Consumatore
-  Message Passing
-  Readers/Writers
Venerdi 1 Aprile, Venerdi' 15 Aprile 2016 (360 min): Slide del docente 
-  Architettura di Internet: Internet service providers, Internet exchange points, architettura a tre livelli.
-  Richiami di TCP/IP
-  Sockets: architettura e programmazione 
-  Network Adaptors: dalla applicazione che utilizza i socket all'invio del messaggio sulla rete
-  Tempo logico nei sistemi distribuiti
-  La mutua esclusione nei sistemi distribuiti:  Algoritmo di Ricart-Agrawal note del docente
-  Introduzione alle minacce cyber
-  Vulnerability, software bug, exploit
-  Buffer Overflow Attack  
[ 
A.A. 2014-2015 ]
 
Page was generated in 0.0433 seconds