You are on page 1of 1

Parte I Architettura dei calcolatori

1. Introduzione al corso. Definizione di architettura dei calcolatori e sua virtualizzazione e


astrazione. Evoluzione e prestazioni dei calcolatori. Progettazione in funzione delle
prestazioni.
2. Instruction Set Architecture: il caso del processore MIPS. Caratteristiche delle istruzioni:
elementi, rappresentazione, tipi, numero di indirizzi, progettazione del repertorio di
istruzioni. Tipi di operandi. Tipi di operazioni. Modi di indirizzamento. Formati delle
istruzioni. Supporto alle procedure. Interazioni con il Compilatore e ottimizzazioni del
codice.
3. Aritmetic Logic Unit. Architettura interna. Rappresentazioni dei numeri reali (IEEE 754).
Somma moltiplicazione e divisione di numeri in virgola mobile.
4. Il processore centrale. Architettura del processore. Organizzazione dei registri. Ciclo di
esecuzione delle istruzioni. Pipelining delle istruzioni. Conflitti sui dati e sui controlli. Data
forwarding e hazard detection.
5. Unit di controllo. Fasi di una istruzione e microoperazioni. Controllo del processore:
requisiti funzionali, segnali di controllo, organizzazione interna. Implementazione cablata.
Implementazione microprogrammata: microistruzioni, unit di controllo microprogrammata.
6. La memoria primaria. Gerarchia di memoria. Memoria cache: principi di funzionamento,
elementi di progettazione (dimensione, funzioni di traduzione, algoritmi di sostituzione,
politica di scrittura, dimensionamento delle linee, cache multiple). Tipi memoria (ROM,
DRAM e SRAM) e loro organizzazione.
7. Memorie a dischi magnetici: meccanismi di lettura e scrittura, organizzazione e
formattazione dei dati, sistemi RAID. Memorie a dischi ottici.
8. La valutazione delle prestazioni dei calcolatori. Metodi e strumenti per la valutazione delle
prestazioni. Parametri misurabili e loro attendibilit. Interpretazione delle misure di
prestazione.

Parte II Sistemi Operativi

1. Introduzione alla struttura dei sistemi operativi. Concetti base, struttura monolitica e a
microkernel. Macchine virtuali.
2. Le chiamate a sistema e loro gestione. Meccanismo di passaggio da spazio utente a spazio
del sistema operativo. Protezioni. Esempio: programmazione socket.
3. La gestione dei processi e dei thread. Creazione e gestione processi. I thread e loro
implementazione. Lo scheduling della CPU. Esempio: programmazione socket.
4. La comunicazione e sincronizzazione fra processi. Corse e regioni critiche. Mutua
esclusione e polling attesa. Semafori e loro utilizzo per mutua esclusione e sincronizzazione.
Esempio: programmazione socket.
5. La gestione della memoria. Astrazione dello spazio indirizzi. Gestione paginata e sue
problematiche di implementazione. Gestione segmentata.
6. Il file system. Struttura e attributi di file e directory. Metodi di implementazione e
ottimizzazione dei file system. Problematiche di protezione e condivisione.
7. La gestione dellinput-output. Interazione CPU-dispositivi-memoria. Architettura DMA.
Gestione dei dischi, loro struttura e ottimizzazione. Gestione clock. Problematiche di
deadlock e possibili soluzioni per il rilevamento, lesclusione e la prevenzione.