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