Programmazione Concorrente e Distribuita a.a. 2006 - 2007 programma del corso 1. Concetti fondamentali di Programmazione Concorrente ([1],cap. 1e2) Algoritmo, Programma, Processo Processi Concorrenti Architettura di una macchina concorrente 2. Costrutti Linguistici per la Programmazione Concorrente ([1],cap. 3) Coroutines Fork Join Cobegin Coend Processi 3. Modello a Memoria Comune ([1], cap. 4) Semafori Regioni Critiche e Regioni Critiche Condizionali Monitor Path expression Linguaggi Concorrenti 4. Modello a Memoria Distribuita ([1], cap. 5) Caratteristiche Scambio di Messaggi Primitive Asincrone Primitive Sincrone Chiamate di Procedura Remota Linguaggi Concorrenti 5. Coordinazione in Sistemi Distribuiti ([2], cap. 18) Ordinamento degli Eventi Mutua Esclusione Atomicita` Controllo della Concorrenza Gestione del Deadlock Algoritmi di elezione Problema del Consenso 6. Approfondimento di Algoritmi distribuiti : Algoritmi di M.E. e elezione ([3], cap. 2, pp. 19-37) Algoritmi di M. E. : Algoritmo di Ricart e Agrawala/Suzuki Kasami Algoritmi di rigenerazione del token: Algoritmo di Misra Algoritmi elettivi Algoritmo di Chang Roberts Algoritmo di Hirschberg e Sinclair Algoritmi di gestione del deadlock ([3], cap. 3, pp. 53-59) Algoritmi di Rosenkrantz, Sterns e Lewis : Algoritmi di scoperta del deadlock: Deadlock per comunicazione Algoritmo di Chandy, Misra e Haas Algoritmi di terminazione ([3], cap. 4, pp. 67-69 e 78-81) Algoritmi di Misra Algoritmi di consenso ([3], cap. 7, pp. 137- 149)) Testi [1] Ancillotti - Boari. Principi e tecniche di Programmazione Concorrente UTET LIBRERIA [2] Silberschatz - Galvin. Operating System Principles. ADDISON WESLEY 4 ed. [3] Raynal. Distributed Algorithms and Protocols. WILEY & SONS