Additions:
[ [[https://www.youtube.com/watch?v=A0Eu5eGmkso&index=22&list=PLAQopGWlIcybT12h7fjVvlGAeSqOKDnTA video]] ]
Additions:
==Venerdì 16 dicembre 2016 (Esercitazione 6 - 120 min) - Coppa/D'Elia/Demetrescu==
~- Esercitazione in laboratorio: [[Eserc06AA1617 ottimizzazioni accesso a memoria]]
Additions:
==Venerdì 2 dicembre 2016 (Esercitazione 5 - 120 min) - Coppa/D'Elia/Demetrescu==
~- Esercitazione in laboratorio: [[Eserc05AA1617 sviluppo di una shell, chiamate a sistema]]
Additions:
==Venerdì 18 novembre 2016 (Esercitazione 4 - 120 min) - Coppa/D'Elia/Demetrescu==
==Venerdì 25 novembre 2016 - Coppa/D'Elia/Demetrescu==
Deletions:
==Venerdì 4 novembre 2016 (Esercitazione 4 - 120 min) - Coppa/D'Elia/Demetrescu==
==Venerdì 25 ottobre 2016 - Coppa/D'Elia/Demetrescu==
Additions:
[ [[https://www.youtube.com/watch?v=27nkZG98Xl4&list=PLAQopGWlIcybT12h7fjVvlGAeSqOKDnTA&index=26 Video]] ]
[ [[https://www.youtube.com/watch?v=7u63OlrrjQs&list=PLAQopGWlIcybT12h7fjVvlGAeSqOKDnTA&index=27 video parte I]] | [[https://www.youtube.com/watch?v=TlfzRMdDn5Y&list=PLAQopGWlIcybT12h7fjVvlGAeSqOKDnTA&index=28 video parte II]] ]
Additions:
==Giovedì 15 dicembre 2016 (Lezione 26, 27 - 180 min) - allocazione dinamica e allocazione della memoria fisica==
~- Come è strutturata la memoria? (parte III)
~~- Ordine dei byte in memoria (endianness)
~~~- storia e motivazioni, usi attuali (es. network byte order)
~~~- esempi di accesso a singoli byte/word in un dato memorizzato
~- Come viene gestita la memoria? [[[http://www.cs.cmu.edu/~213/lectures/17-vm-concepts.pdf ref1]], [[http://www.cs.cmu.edu/~213/lectures/18-vm-systems.pdf ref2]]]
~~- memoria fisica (gestita dal sistema operativo) e memoria virtuale (visibile ai processi)
~~- allocazione dinamica della memoria
~~~- frammentazione interna ed esterna
~~~- qualità di un allocatore: tempo e spazio
~~~- allocazione in cascata della memoria
~~~- cenni ad implementazione di un allocatore: malloc/free, sbrk(2)
~~- allocazione nella memoria fisica: memoria virtuale
~~~- mapping tra indirizzi virtuali e indirizzi fisici: MMU
~~~- paginazione
~~~- come avviene il mapping degli indirizzi logici su quelli fisici?
~~~- quanto spazio occupa una tabella delle pagine?
~~- paginazione con bit di validità
~~- page fault memoria virtuale e loro gestione, protection fault (SIGSEGV)
~~- paginazione con bit di validità e swapping su disco
~~- working set e thrashing
Additions:
==Lunedì 12 dicembre 2016 (Lezione 25 - 90 min) - gerarchie di memoria e ottimizzazioni==
~- Come è strutturata la memoria? (parte II) [[[http://www.cs.cmu.edu/~213/lectures/10-memory-hierarchy.pdf ref1]], [[http://www.cs.cmu.edu/~213/lectures/12-cache-memories.pdf ref2]]]
~~- gerarchie di memoria:
~~~- registri, cache L1 (D+I), L2, L3, memoria, disco
~~~- trasferimento dati a blocchi tra livelli successivi di una memoria gerarchica
~~~- analisi di costo/dimensione/[[https://gist.github.com/hellerbarde/2843375 velocità]] dei livelli di una memoria gerarchica
~~~- caso di studio: Intel Core i7, gerarchia di memoria (L1i, L1d, L2, L3, DDR3) [[[http://www.cs.cmu.edu/~213/lectures/18-vm-systems.pdf ref]]]
~~- ottimizzazioni del codice nell'uso della memoria:
~~~- Tempo di esecuzione
~~~~- sfruttare velocità dei registri: allocazione dei registri
~~~~- scrittura di codice cache-friendly: caso di studio del prodotto di matrice
~~~~- allineamento e padding:
~~~~~- stack frame a 16 byte prima di una call
~~~~~- allineamento dei campi delle struct
~~~- Spazio
~~~~- ridurre la dimensione dei dati: riordinare le struct per ridurre il padding
~~~~- ridurre la dimensione del codice: rimpiazzo di istruzioni con altre che richiedono meno byte (es. movl $1, D -> incl D)
Additions:
[ [[https://www.youtube.com/watch?v=i9dMj3XROxw&index=22&list=PLAQopGWlIcybT12h7fjVvlGAeSqOKDnTA video parte I]] | [[https://www.youtube.com/watch?v=hRw4o2IpVjs&list=PLAQopGWlIcybT12h7fjVvlGAeSqOKDnTA&index=23 video parte II]] ]
Deletions:
[ [[https://www.youtube.com/watch?v=i9dMj3XROxw&index=22&list=PLAQopGWlIcybT12h7fjVvlGAeSqOKDnTA video parte I]] ] | [ [[https://www.youtube.com/watch?v=hRw4o2IpVjs&list=PLAQopGWlIcybT12h7fjVvlGAeSqOKDnTA&index=23 video parte II]] ]
Additions:
[ [[https://www.youtube.com/watch?v=i9dMj3XROxw&index=22&list=PLAQopGWlIcybT12h7fjVvlGAeSqOKDnTA video parte I]] ] | [ [[https://www.youtube.com/watch?v=hRw4o2IpVjs&list=PLAQopGWlIcybT12h7fjVvlGAeSqOKDnTA&index=23 video parte II]] ]
Additions:
[ [[https://www.youtube.com/watch?v=aEF32zhb-z4&list=PLAQopGWlIcybT12h7fjVvlGAeSqOKDnTA&index=24 Video]] ]
Additions:
==Lunedì 5 dicembre 2016 (Lezione 24 - 90 min) - accesso a memoria e cache==
~- Come è strutturata la memoria? (parte I) [[[http://www.cs.cmu.edu/~213/lectures/10-memory-hierarchy.pdf ref1]], [[http://www.cs.cmu.edu/~213/lectures/12-cache-memories.pdf ref2]]]
~~- astrazione con modello lineare
~~- transazioni di lettura e scrittura: configurazione del bus, trasferimenti da CPU a memoria e viceversa
~~- divario tra velocità CPU (cycle time) e velocità accesso a memoria, evoluzione del trend
~~- principio di località, località spaziale e temporale
~~- caching come strategia di duplicazione della memoria oppure per memorizzare risultati di computazioni ricorrenti
~~- cache come buffer per compensare divario tra velocità di processamento e velocità di accesso ai dati sfruttando il principio di località
~~~- partizionamento in blocchi, dimensione blocco (linea di cache), cache hit e cache miss, cenni a strategia di replacement
~~~- esempi di analisi: somma degli elementi di un array, scansione lineare di un array vs. lista collegata
~~- altri usi delle cache in un sistema di calcolo (es. disco, browser)
~- Complementi sull'uso dei segnali: system call ##sigaction##
Additions:
==Giovedì 1 dicembre 2016 (Lezione 22, 23 - 180 min) - system call processi==
~- Esecuzione simultanea di più processi (parte II):
~~- system call per il controllo dei processi:
~~~- creazione (fork, [[http://pubs.opengroup.org/onlinepubs/009695399/functions/exec.html exec]])
~~~- terminazione (exit)
~~~- attesa terminazione (wait)
~~~- segnali (##signal##, ##kill##, armatura dei segnali e signal handler)
Additions:
~~- attesa di eventi: busy waiting/polling e interrupt
Deletions:
~~- uso dei comandi ##ps## e ##top## per analizzare i processi
Additions:
==Lunedì 28 novembre 2016 (Lezione 21 - 90 min) - stati processi e scheduling==
Deletions:
==Lunedì 28 novembre 2016 (90 min) - stati processi e scheduling==
Additions:
I video delle lezioni a partire dal 10 ottobre sono disponibili sul [[https://www.youtube.com/playlist?list=PLAQopGWlIcybT12h7fjVvlGAeSqOKDnTA canale Youtube del DIAG]]. Il codice sviluppato in aula è disponibile al [[https://drive.google.com/drive/folders/0B0-hW0pRrSTmZHZCbno4WDdlYjQ seguente link condiviso]].
Deletions:
I video delle lezioni a partire dal 10 ottobre sono disponibili sul [[https://www.youtube.com/playlist?list=PLAQopGWlIcybT12h7fjVvlGAeSqOKDnTA canale Youtube del DIAG]].
Additions:
~- Prova intermedia di esonero:
~~- prova al calcolatore:
~~~- programmazione IA32
~~~- profilazione delle prestazioni
~~~- tecniche di ottimizzazione dei programmi per ridurre il numero di istruzioni eseguite
~~~- debugging con gdb e valgrind
~~- domande a quiz:
~~~- concetti di base sull'ambiente Linux (file system, shell, permessi, comandi, variabili di ambienti, canali, redirezione, pipe, ecc.)
~~~- architettura generale di un sistema di calcolo (Von Neumann)
~~~- pipeline di compilazione
~~~- tecniche di ottimizzazione per la riduzione del work, legge di Amdahl
Deletions:
~- Prova intermedia di esonero
Additions:
[ [[https://www.youtube.com/watch?v=p7xF8f46P4U&index=19&list=PLAQopGWlIcybT12h7fjVvlGAeSqOKDnTA video parte I]] ]
[ [[https://www.youtube.com/watch?v=owJtctA0Yjw&index=20&list=PLAQopGWlIcybT12h7fjVvlGAeSqOKDnTA video parte II]] ]
~- Svolgimento di esercizi per la preparazione all'esonero
Deletions:
[ [[https://www.youtube.com/watch?v=owJtctA0Yjw&index=19&list=PLAQopGWlIcybT12h7fjVvlGAeSqOKDnTA video parte I]] ]
[ [[https://www.youtube.com/watch?v=owJtctA0Yjw&index=20&list=PLAQopGWlIcybT12h7fjVvlGAeSqOKDnTA video parte I]] ]
Additions:
[ [[https://www.youtube.com/watch?v=owJtctA0Yjw&index=19&list=PLAQopGWlIcybT12h7fjVvlGAeSqOKDnTA video parte I]] ]
[ [[https://www.youtube.com/watch?v=owJtctA0Yjw&index=20&list=PLAQopGWlIcybT12h7fjVvlGAeSqOKDnTA video parte I]] ]
Additions:
==Lunedì 28 novembre 2016 (90 min) - stati processi e scheduling==
~- Esecuzione di un processo (parte IV):
~~- stati di un processo: running user, running kernel, waiting ([[http://www.linux-tutorial.info/modules.php?name=MContent&pageid=84 diagramma degli stati in Linux]])
~- Esecuzione simultanea di più processi (parte I):
~~- nozione di esecuzione concorrente
~~- multiprogrammazione e scheduling dei processi: [[[https://www.cs.cmu.edu/afs/cs/academic/class/15213-f10/www/lectures/12-exceptions.pdf ref]]]
~~~- context switch: salvataggio dello stato della CPU nel PCB
~~~- altri stati di un processo: started, ready, zombie
~~~- esempio del time sharing round-robin mediante timer e interrupt
~~~- cenni allo scheduling con priorità
~~- albero dei processi
~~- uso dei comandi ##ps## e ##top## per analizzare i processi