A.A. 2011-2012
News
- Si comunica che l'appello di esame di Architettura dei Calcolatori e di Sistemi Operativi Real Time previsto per il 26.11.2012 è posticipato al 03.12.2012 ore 14.
-
La prossima data utile per la verbalizzazione degli esami di Architettura dei Calcolatori e di Sistemi Operativi Real-Time, valida anche per chi ha superato le corrispondenti prove in itinere, è prevista per il 3 dicembre, ore 14:00, durante l'appello di esame.
Egualmente le date successive coincideranno con le date di appello previste.
Comunicazioni generali
-
Regole per il superamento delle prove in itinere di Architettura dei Calcolatori
- Le prove in itinere delle due parti costituenti il corso (Programmazione Concorrente e Sistemi Digitali) sono indipendenti: il mancato esito positivo di una o del complesso delle prove di esonero per una parte del corso non pregiudica la partecipazione a quella/e dell'altra parte.
- L'esame complessivo di Architettura dei Calcolatori e' superato quando su ENTRAMBE le parti e' stata raggiunta una votazione maggiore o uguale a 18. Regole per il superamento dell'esame di Architettura dei Calcolatori
-
Per sostenere l'esame è necessario iscriversi utilizzando le procedure previste. Chi non è iscritto non potrà sostenere l'esame.
Gli studenti DEVONO inviare al docente una email di conferma di iscrizione. -
Gli esami superati possono essere verbalizzati durante lo scritto dell'appello successivo.
Per esigenze particolari contattare il docente.
Calendario del corso
- Inizio delle lezioni Venerdì 16 Marzo.
- Lunedì 14:00 - 18:00,
- Venerdì 14:00 - 18:00.
Ricevimento Studenti
- Al termine delle lezioni.
Programma del corso
-
Obbiettivi
Saper analizzare e progettare reti logiche combinatorie e sequenziali. Conoscere la struttura dei principali componenti logici alla base dei circuiti digitali (registri, decodificatori, mux, contatori, ecc.). Saper progettare un sistema composto da circuiti digitali. Comprensione degli elementi architetturali di un moderno calcolatore e struttura di processore, memoria, ingresso/uscita. Conoscere le problematiche inerenti all'accesso alle risorse condivise nei calcolatori. Conoscere ed utilizzare le principali strategie di gestione delle risorse condivise (semafori, mutex e condition variables).
PrerequisitiConoscenza del linguaggio C e tecniche di programmazione.
Programma -
Programmazione Concorrente
Concurrent Programming basic concepts.
HW/SW resources (CPU, memorie, dispositive di I/O).
Polling versus Interrupts.
Interrupt synchronization and nested interrupts.
Atomicity:
Single processor: STI, CLI instructions. Multiprocessors: lock/unlock operations. Concetti di processo e di thread. Il Thread Control Block.
Introduzione alla programmazione concorrente, modello teorico, il concetto di risorsa, modello di interazione: shared memory, message passing model.
Il modello a memoria comune, tipologie di allocazione delle risorse e di accesso alle risorse
La mutua esclusione: definizione, il problema dell'incremento di una variabile, utilizzo delle proprietà di consistenza. Problema dell'inserimento/estrazione di un elemento in un array circolare.
Sezioni critiche: definizione, implementazione della mutua esclusione: utilizzo di operazioni atomiche, disabilitazione delle preemption, disabilitazione selettiva delle preemption ed utilizzo dei semafori e mutex.
Modello a memoria comune: la sincronizzazione. Problema del produttore/consumatore. Implementazione con gli array circolari.
I semafori: definizione, le primitive wait e signal, implementazione della mutua esclusione, implementazione della sincronizzazione, cenni alla implementazione dei semafori in POSIX, soluzione al problema dei produttori/consumatori, verifica della correttezza, problema dei produttori/consumatori multipli. Deadlock. Implementazione dei semafori.
Lo standard POSIX: introduzione, la libreria pthread, thread creation, join, end, pthread cancellation, cleanup handlers; semafori.
Richiami al concetto di semaforo ed ai suoi impieghi per le sincronizzazione e la mutual exclusion, esempio di sincronizzazione di N threads. Readers/Writers problem: simple solution con il raggruppamento dei readers, simple solution con il raggruppamento dei writers, soluzione al problema della starvation sui writers.
I semafori privati: concetti e loro impiego. Soluzione al problema dei Readers/Writers.
Implementazione dei semafori.
Monitors: introduzione, supporto della mutua esclusione e della sincronizzazione.
Condition variables. Esempio: soluzione al problema dell'array circolare con i monitors.
Standard POSIX: mutex definition, initialization, lock e unlock; condition variables definition, initialization, waiting for a condition, signaling a condition.
Message passing model: Primitive send e receive. Classification: synchronous, asynchronous, symmetric, asymmetric, mutual exclusion with message passing.
Deadlock.
Livelock.
Deadlock prevention.
Deadlock avoidance.
Deadlock detection.
Il problema dei filosofi a cena.
-
Sistemi digitali
Rappresentazione dell'informazione.
Elementi di Algebra di Boole.
Logica combinatoria: analisi e progettazione di reti combinatorie.
Logica sequenziale: analisi e progettazione di reti sequenziali asincrone e sincrone.
Registri, contatori e registri multifunzionali e dispositivi Logici Programmabili.
Progettazione di sistemi digitali.
Organizzazione della CPU: implementazione di controllo e datapath.
Banchi di memoria, espansioni di memoria, memorie statiche, memorie dinamiche e tecnologie di memoria. -
Architettura del calcolatore
Descrizione e caratteristiche dei principali moduli che compongono un moderno calcolatore: cpu, memoria, bus, arbitraggio del bus, dispositivi di input/output (I/O), meccanismo di interruzione, introduzione al DMA.
-
Moderni sistemi di elaborazione
Discussione sulle caratteristiche architetturali e prestazionali dei moderni sistemi di elaborazione: cpu, memorie, bus, interfacce di I/O.
Testi consigliati
- Paolo Ancilotti, Maurelio Boari, Anna Ciampolini, Giuseppe Lipari, Sistemi Operativi, Mc-Graw Hill, Second Edition, June 2008, per approfondimenti sulla prima parte riguardante i sistemi operativi.
- Paolo Ancilotti, Maurelio Boari: "Principi e tecniche di programmazione concorrente" Utet libreria, 1987 (In biblioteca, SOLO pagine 67-107).
- Linux man pages (come riferimento on-line per la programmazione POSIX).
- V. Carl Hamacher, Vranesic Zvonko, Zaky Safwat, Introduzione all'architettura dei calcolatori, McGraw-Hill Companies, Second Edition, January 2007.
Approfondimenti
- B.W. Kernighan, D. Ritchie - Linguaggio C - Jackson Libri, II edizione
- Maestrini, "Sistemi Operativi", McGraw-Hill Italia, ISBN 8838606927
- Silberschatz, Galvin, Gagne, "Sistemi Operativi Concetti ed Esempi", Addison Wesley Italia, ISBN 8871921402
- Tanenbaum, "Sistemi Operativi, progetto ed implementazione", UTET, ISBN 8877504242
- P.Ancilotti e M.Boari: "Principi e tecniche di programmazione concorrente" Utet libreria, 1987.
- Jane W. S. Liu, Real-Time Systems, ISBN 0-13-099651-3
- A. Burns and A. J. Wellings, Real-Time Systems and Programming Languages, 3rd Edition, Addison Wesley, 738 pages, 2001.
Anni accademici precedenti
- A.A. 2010/2011 (Docente Dott. Marko Bertogna).