Video delle lezioni dell'A/A 2020/21
- Lun 01/03/2021 10:30-12:30 (2:0 h) lezione: Introduzione al corso. L'esempio dell'elaboratore SSEM: processore, memoria, linguaggio macchina, caricamento di un programma. (Giuseppe Lettieri)
- Mar 02/03/2021 10:30-12:30 (2:0 h) lezione: Il processore Intel/AMD a 64 bit. Registri, modalità di accesso degli operandi, indirizzamento della memoria. (Giuseppe Lettieri)
- Gio 04/03/2021 14:30-16:30 (2:0 h) lezione: Indirizzi canonici. Esempio di programma assembler: le direttive, le etichette. Utilizzo di assemblatore, collegatore e debugger. (Giuseppe Lettieri)
- Ven 05/03/2021 10:30-12:30 (2:0 h) lezione: Spazio di indirizzamento: confini, offset, intervalli, allineamenti. Scomposizione degli indirizzi. (Giuseppe Lettieri)
- Lun 08/03/2021 10:30-12:30 (2:0 h) lezione: Endianness. Parallelismo negli accessi allo spazio di memoria. Le linee di byte enable. Collegamento al bus di un modulo di RAM. (Giuseppe Lettieri)
- Mar 09/03/2021 10:30-12:30 (2:0 h) esercitazione: Scrittura di programmi assembler su più file. (Giuseppe Lettieri)
- Gio 11/03/2021 14:30-16:30 (2:0 h) lezione: Introduzione alla scrittura di programmi misti C++/Assembler. Funzione main. Registri preservati e scratch. Regole di allineamento dei tipi base e strutturati. (Giuseppe Lettieri)
- Ven 12/03/2021 10:30-12:30 (2:0 h) lezione: Programmazione mista C++/Assembly: record di attivazione, passaggio dei parametri tramite i registri. (Giuseppe Lettieri)
- Lun 15/03/2021 10:30-12:30 (2:0 h) esercitazione: Esercizi di traduzione da C++ ad Assembly, con passaggio di parametri per valore e riferimento. (Giuseppe Lettieri)
- Mar 16/03/2021 10:30-12:30 (2:0 h) esercitazione: Esercizi su corrispondenza tra C++ e Assembly: funzioni con argomenti di tipo array e struttura. (Giuseppe Lettieri)
- Gio 18/03/2021 14:30-16:30 (2:0 h) lezione: Memoria Cache: principi di località, controllore, memoria ad acesso diretto e associativa ad insiemi, politiche di write-through/write-back. (Giuseppe Lettieri)
- Ven 19/03/2021 10:30-12:30 (2:0 h) lezione: Algoritmo pseudo-LRU per cache associative a 4 vie. Traduzione dei nomi C++ in assembler: funzioni globali con parametri di tipi base, definiti dall'utente e composti. (Giuseppe Lettieri)
- Lun 22/03/2021 10:30-12:30 (2:0 h) lezione: Corrispondenza tra C++ e Assembler: classi, oggetti, funzioni membro, costruttori. (Giuseppe Lettieri)
- Mar 23/03/2021 10:30-12:30 (2:0 h) lezione: Funzioni che restituiscono strutture, classi o unioni per valore. Regole per l'elisione dei costruttori di copia. Return Value Optimization e Named Return Value Optimization. (Giuseppe Lettieri)
- Gio 25/03/2021 14:30-16:30 (2:0 h) esercitazione: Svolgimento di testi d'esame su corrispondenza tra C++ e Assembler. (Giuseppe Lettieri)
- Ven 26/03/2021 10:30-12:30 (2:0 h) esercitazione: Svolgimento di testi d'esame su corrispondenza tra C++ e Assembler. (Giuseppe Lettieri)
- Lun 29/03/2021 10:30-12:30 (2:0 h) lezione: Funzionamento interno e interazione tra gli strumenti di sviluppo: preprocessore, compilatore, assemblatore, collegatore, caricatore. Il formato ELF. Le tabelle dei simboli e di rilocazione. (Giuseppe Lettieri)
- Mar 30/03/2021 10:30-12:30 (2:0 h) lezione: Librerie statiche: creazione e utilizzo. Accesso a basso livello: caricamento (in macchina virtuale) di programmi con accesso completo a CPU, IO e memoria. (Giuseppe Lettieri)
- Gio 08/04/2021 14:30-16:30 (2:0 h) lezione: Interfacce di I/O: la tastiera e il video in modalità testo. (Giuseppe Lettieri)
- Ven 09/04/2021 10:30-12:30 (2:0 h) lezione: Interfacce di I/O: il video in modalità grafica; l'interfaccia di conteggio e temporizzazione. (Giuseppe Lettieri)
- Lun 12/04/2021 10:30-12:30 (2:0 h) lezione: Interfacce di I/O: i dispositivi a blocchi; l'hard disk con interfaccia ATA. (Giuseppe Lettieri)
- Mar 13/04/2021 10:30-12:30 (2:0 h) lezione: Introduzione al meccanismo delle interruzioni: motivazioni, realizzazione hardware con un'unica sorgente di richieste; l'istruzione IRETQ. (Giuseppe Lettieri)
- Mer 14/04/2021 15:30-16:30 (1:0 h) esercitazione: Esercizio su scrittura di programmi con interruzioni. (Giuseppe Lettieri)
- Gio 15/04/2021 14:30-15:30 (1:0 h) lezione: Interruzioni vettorizzate: la tabella IDT e il controllore APIC. (Giuseppe Lettieri)
- Ven 16/04/2021 10:30-11:30 (1:0 h) lezione: Controllore APIC: trigger mode; registri IRR e ISR e gestione delle interruzioni annidate con priorità. (Giuseppe Lettieri)
- Ven 16/04/2021 11:30-12:30 (1:0 h) esercitazione: Esempi di programmi con più di una sorgente di richieste di interruzione. (Giuseppe Lettieri)
- Lun 19/04/2021 10:30-12:30 (2:0 h) lezione: Il bus PCI: principali collegamenti; transazioni; spazi di indirizzamento; lo spazio di configurazione e i registri BAR. (Giuseppe Lettieri)
- Mar 20/04/2021 10:30-12:30 (2:0 h) lezione: Accesso allo spazio di configurazione PCI. Il Bus Mastering PCI: architettura generale; interazioni con i meccanismi della cache e delle interruzioni. (Giuseppe Lettieri)
- Gio 22/04/2021 14:30-16:30 (2:0 h) esercitazione: Esempio di programmazione di operazioni in Bus Mastering: il ponte PCI-ATA. (Giuseppe Lettieri)
- Ven 23/04/2021 10:30-12:30 (2:0 h) lezione: Il meccanismo delle eccezioni: trap, fault e abort; esempi di programmi che generano e intercettano interruzioni. Introduzione al meccanismo della protezione. (Giuseppe Lettieri)
- Lun 26/04/2021 10:30-12:30 (2:0 h) lezione: La protezione nel processore Intel/AMD a 64 bit: i gate della IDT, CPL, DPL e IOPL; azioni del processore durante l'attraversamento di un gate e l'isruzione IRETQ; il cambio pila. (Giuseppe Lettieri)
- Mar 27/04/2021 10:30-12:30 (2:0 h) lezione: I concetti di processo, primitiva e contesto. Introduzione al nucleo multiprogrammato didattico. Gli stati di esecuzione di un processo. (Giuseppe Lettieri)
- Gio 29/04/2021 14:30-16:30 (2:0 h) lezione: Realizzazione dei processi: modello di condivisione; descrittore di processo; pile sistema private; caricamento e salvataggio dello stato; atomicità; creazione di un processo. (Giuseppe Lettieri)
- Ven 30/04/2021 10:30-12:30 (2:0 h) lezione: Boostrap del sistema. Le funzioni salva_stato e carica_stato. Realizzazione delle primitive. (Giuseppe Lettieri)
- Lun 03/05/2021 10:30-12:30 (2:0 h) lezione: Problemi di mutua esclusione e sincronizzazione. Le primitive semaforiche: utilizzo e implementazione. (Giuseppe Lettieri)
- Mar 04/05/2021 10:30-12:30 (2:0 h) esercitazione: Svolgimento di testi d'esame (sincronizzazione tra processi). (Giuseppe Lettieri)
- Gio 06/05/2021 14:30-16:30 (2:0 h) esercitazione: Svolgimento di testi d'esame (sincronizzazione tra processi). (Giuseppe Lettieri)
- Ven 07/05/2021 10:30-12:30 (2:0 h) esercitazione: Svolgimento di testi d'esame (gestione dei processi sospesi sulla coda del timer). (Giuseppe Lettieri)
- Lun 10/05/2021 10:30-12:30 (2:0 h) lezione: Introduzione alla memoria virtuale realizzata tramite la paginazione. Pagine, frame e traduzione degli indirizzi. La MMU. (Giuseppe Lettieri)
- Mar 11/05/2021 10:30-12:30 (2:0 h) lezione: Tabelle multilivello, bitwise TRIE, byte di accesso. Esempio di evoluzione del sistema. (Giuseppe Lettieri)
- Gio 13/05/2021 14:30-16:30 (2:0 h) lezione: Memoria fisica in memoria virtuale. Esempio di costruzione dell'albero di traduzione. (Giuseppe Lettieri)
- Ven 14/05/2021 10:30-12:30 (2:0 h) esercitazione: Esempi pratici di traduzione da indirizzo virtuale a fisico. (Giuseppe Lettieri)
- Lun 17/05/2021 10:30-12:30 (2:0 h) lezione: Pagine di grandi dimensioni. Il TLB. Strutture dati e funzioni per l'accesso e la modifica delle tabelle. (Giuseppe Lettieri)
- Mar 18/05/2021 10:30-12:30 (2:0 h) lezione: Implementazione della paginazione nel nucleo didattico. (Giuseppe Lettieri)
- Gio 20/05/2021 10:30-12:30 (2:0 h) lezione: Operazioni di I/O nel sistema multiprogrammato: primitiva e driver; mutua esclusione e sincronizzazione, il problema del Cavallo di Troia. (Giuseppe Lettieri)
- Ven 21/05/2021 10:30-11:30 (1:0 h) lezione: Il modulo I/O: primitive, handler e processo esterno. (Giuseppe Lettieri)
- Ven 21/05/2021 11:30-12:30 (1:0 h) esercitazione: Esempio di modulo I/O per una semplice periferica di ingresso. (Giuseppe Lettieri)
- Lun 24/05/2021 10:30-11:30 (1:0 h) lezione: Struttura di handler/processo esterno per operazioni in Bus Mastering. Interazioni con la memoria virtuale. (Giuseppe Lettieri)
- Lun 24/05/2021 11:30-12:30 (1:0 h) esercitazione: Esempio di primitiva di I/O per trasferimenti in bus mastering. (Giuseppe Lettieri)
- Mar 25/05/2021 10:30-12:30 (2:0 h) esercitazione: Svolgimento di testi d'esame. (Giuseppe Lettieri)