CALCOLATORI ELETTRONICI 2017/2018 (9 CFU) * * DOCENTI Ing. Giuseppe LETTIERI, titolare (70 ore), Prof Graziano FROSINI, codocente (20 ore) * * Numero totale di ore di lezione (L):45 Numero totale di ore di esercitazione (E): 45 Numero totale di eventuali ore di laboratorio (S):- * * PROPEDEUTICITA': Reti Logiche. Fon INF * * Conoscenze: L’insegnamento ha l’obiettivo di fornire le conoscenze sull’architettura dei moderni Calcolatori, sul nucleo di sistema operativo e sulle modalità di implementazione del linguaggio C++. Capacità: L’insegnamento ha l’obiettivo di sviluppare le capacità (professionali) di configurare calcolatori e, per applicazioni dedicate, di progettare e realizzare semplici nuclei di sistema operativo e di implementare semplici linguaggi di basso livello. Comportamenti. L’insegnamento ha l’obiettivo di fornire agli studenti un comportamento progettuale complessivo, che comprenda tutti gli aspetti della macchina “calcolatore” inserita in un ambiente con problematiche ingegneristiche di vario genere. * * PROGRAMMA DI MASSIMA: * * SVILUPPO DI PROGRAMMI SU PIU’ FILE. Programmazione su più file in Assembler e in C++. Regole basilari di corrispondenza tra C++ e Assembler. Collegamento tra file scritti in linguaggi diversi. Programmi di sistema: Assemblatore, Collegatore, Caricatore. Rilocazione. (L: 5,E: 10) CORRISPONDENZA TRA C++ E ASSEMBLER. Parametri e risultato.Record di attivazione. Identificatori. Funzioni e operatori globali. Classi. Funzioni e operatori membro. (L. 5, E: 15). INTERFACCIAMENTO. Tastiera e video. Contatori.. Interfacce seriali.Unità a disco. (E: 10) ARCHITETTURA DI UN CALCOLATORE. Unità di elaborazione logico-aritmetica.Cenni all'unità in virgola mobile. Struttura interna. Bus di comunicazione. Il bus PCI. Gerarchie di memoria. Interruzioni e controllore APIC. Interfacce con accesso diretto alla memoria. (L: 10) ASPETTI ARCHITETTURALI AVANZATI. Memoria virtuale. Paginazione. Trasferimento delle pagine. Livelli di privilegio. Multiprogrammazione. (L: 10) NUCLEO DI SISTEMA OPERATIVO. Processo: descrittore e corpo.Livelli di privilegio di un processo. Schedulazione. Commutazione di processo. Sincronizzazione e mutua esclusione. Primitive di nucleo. Operazioni di ingresso/uscita. Primitive di I/O. Gestione della memoria virtuale. (L: 15, E: 10) * * TESTI DI RIFERIMENTO * * -)G. Frosini, “Architettura dei Calcolatori x86-64, Vol. I – Struttura Software del Processore x86-64, Assembler e Corrispondenza fra C++ e Assembler”, Pisa University Press, 2018 (testo aggiornato). -)G. Frosini, G. Lettieri, “Architettura dei Calcolatori, Vol. II – Struttura Hardware del Processore, dei Bus, della Memoria e delle Interfacce, e gestione dell’I/O”, Pisa University Press, 2013. -)G. Frosini, G. Lettieri, “Architettura dei Calcolatori, Vol. III – Aspetti Architetturali Avanzati e Nucleo di Sistema Operativo”, Pisa University Press, 2013. -)Lucidi disponibili in rete. * * MODALITA' DI SVOLGIMENTO DEGLI ESAMI * * Prova scritto/pratica presso il Centro di Calcolo (2 ore) e prova orale. La prova scritto/pratica si conserva per cinque appelli (ordinari) consecutivi. Essa consiste in due esercizi, il primo sulla corrispondenza C++-Assembler e il secondo sui meccanismi di I/O o sul nucleo di sistema operativo. Come tuttii principali esercizi riportati nel nuovo Volume I, anche alcuni sercizi di esame sono disponibili in rete al sito: http://elearn.ing.unipi.it/course/view.php?id=1092