Programmazione Concorrente A.A. 2024/2025¶
Benvenuti al corso di Programmazione Concorrente per A.A. 2024/2025 del Corso di Laurea Magistrale in Ingegneria Informatica di Tor Vergata
Docente: Romolo Marotta
News¶
Per la lista completa degli aggiornamenti visita la sezione dedicata: News
Obiettivi del corso¶
L’obiettivo del corso è fornire allo studente competenze su tematiche di programmazione concorrente con particolare attenzione ai sistemi multicore. Al termine del corso lo studente acquisirà le conoscenze e i concetti alla base di algoritmi concorrenti bloccanti e non, dei meccanismi di locking e delle memorie transazionali, fondamentali ad affrontare sfide nell’ambito della programmazione concorrente su sistemi multicore/multiprocessore.
Prerequisiti¶
Il corso presuppone una buona conoscenza di:
calcolatori elettronici
sistemi operativi
programmazione in linguaggio C
Orario delle lezioni¶
Giorno |
Orario |
Aula |
---|---|---|
Lunedì |
14:00 - 16:00 |
B10 |
Mercoledì |
14:00 - 16:00 |
B10 |
Warning
La didattica sarà svolta esclusivamente in presenza.
La classe virtuale su Teams sarà utilizzata per condividere il materiale del corso e/o informazioni organizzative.
Link ai contenuti del corso¶
Teams (TBA)
Ricevimento¶
Contattare il docente alla seguente email {cognome}@ing.uniroma2.it e riportare il prefisso [PC2425] nell’oggetto.
Modalità d’esame¶
L’esame prevede 1 prova scritta.
Date¶
I Appello (Giugno)
TBD
II Appello (Febbraio)
TBD
Programma e testi¶
Introduzione alla programmazione concorrente e preliminari. Richiami a tematiche di sincronizzazione.
Programmi concorrenti. Speedup e relative leggi (Amdhal, Gustavson, Sun-Ni) - Richiami a concetti di safety e liveness
Correttezza. Condizione di safety - Sequential consistency - Linearizability -Quiscient consistency.
Progresso. Deadlock-freedom. Starvation-freedom. Progresso minimale e massimale. Wait-freedom. Lock-freedom. - Progresso dipendente ed indipendente dallo scheduler
Richiami di architetture shared memory. Core e cache - Memory model - Primitive atomiche
Algoritmi non-bloccanti (lock-free e wait-free). Stack, Insiemi, Code di priorità, Registri.
Meccanismi di locking. Richiami lamport (only R&W) e Primitive RMW. Implementazioni di lock basate su RMW. Cenni ad altri meccanismi di locking (barriere e condizioni).
Transactional Memory. Definizione, Obstruction freedom, Opacity (cenni a TS1 e TS2). Software Transactional Memory (TinySTM). Hardware Transactional Memory (Intel TSX).
Aspetti avanzati - Implementazioni ed hardware NUMA-awareness in algoritmi non bloccanti e non.
Aspetti avanzati - Teoria. Consensus number and hierarchy. Costrutti universali.