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 ---- * :ref:`n25-03-2025` * :ref:`n21-03-2025` * :ref:`n19-03-2025` Per la lista completa degli aggiornamenti visita la sezione dedicata: :doc:`2025/news/index` 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 --------------------------- - :doc:`Slides <2025/slides>` - Teams (TBA) .. - `Teams `_ - `SharePoint `_ - Stream - `Moodle `_ - `GitHub `_ 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 .. role:: removedtopic 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. :ref:`Libri di testo ` .. disabled .. warning:: :removedtopic:`topic` indica che i relativi contenuti sono stati esclusi dal programma .. toctree:: :hidden: self 2025/examples 2025/questions 2025/slides 2025/lectures/index 2025/exams 2025/news/index 2025/errata .. editions