Introduzione alla Programmazione Concorrente La programmazione concorrente nasce

  • Slides: 24
Download presentation
Introduzione alla Programmazione Concorrente La programmazione concorrente nasce per gestire i Sistemi Concorrenti cioe’

Introduzione alla Programmazione Concorrente La programmazione concorrente nasce per gestire i Sistemi Concorrenti cioe’ sistemi in grado di supportare piu’ utenti (o programmi) contemporaneamente • Sistemi intrensecamente concorrenti – Sistemi Real Time – Sistemi operativi – Gestione di basi di dati • Applicazioni potenzialmente concorrenti – Uso di algoritmi paralleli per computazioni: » su grandi quantita’ di dati » con grande mole di calcolo » vincoli di tempo reale 1 PCD 2004/2005

Introduzione alla Programmazione Concorrente Bibliografia: § Ancillotti- Boari. Principi e Tecniche di Programmazione Concorrente.

Introduzione alla Programmazione Concorrente Bibliografia: § Ancillotti- Boari. Principi e Tecniche di Programmazione Concorrente. Utet Libreria § Bacon. Concurrent Systems. Addison- Wesley § Ben-Ari. Principles of concurrent and distributed programming. Prentice-Hall § Raynal. Distributed Algorithms and Protocols. Wiley & Sons 2 PCD 2004/2005

Introduzione alla Programmazione Concorrente Per sistema concorrente intendiamo: – un sistema software – implementato

Introduzione alla Programmazione Concorrente Per sistema concorrente intendiamo: – un sistema software – implementato su vari tipi di hardware – che porta avanti contemporaneamente una molteplicita’ di attivita’ diverse – tra di loro correlate • possono cooperare ad un goal comune • possono competere per risorse condivise 3 PCD 2004/2005

Introduzione alla Programmazione Concorrente Algoritmi, Programmi, Processi • • • Algoritmo: procedimento logico che

Introduzione alla Programmazione Concorrente Algoritmi, Programmi, Processi • • • Algoritmo: procedimento logico che deve essere seguito per risolvere un problema, solitamente specificato da una sequenza di passi che l’esecutore dell’algoritmo deve seguire; Programma: descrizione dell’algoritmo mediante un opportuno formalismo (linguaggio di programmazione) che renda possibile l’esecuzione su un particolare elaboratore; Processo: sequenza di eventi cui dà luogo l’elaboratore quando opera sotto il controllo di un particolare programma. 4 PCD 2004/2005

Introduzione alla Programmazione Concorrente Algoritmi, Programmi, Processi Un esempio: Il M. C. D. tra

Introduzione alla Programmazione Concorrente Algoritmi, Programmi, Processi Un esempio: Il M. C. D. tra due numeri naturali x e y Algoritmo: 1. controllare se i due numeri naturali x e y sono uguali tra loro, nel qual caso il loro M. C. D. coincide con il loro valore; 2. se sono diversi valutarne la differenza; 3. tornare al punto 1, prendendo in considerazione il più piccolo fra i due e la loro differenza. 5 PCD 2004/2005

Introduzione alla Programmazione Concorrente Algoritmi, Programmi, Processi Un esempio: Il M. C. D. tra

Introduzione alla Programmazione Concorrente Algoritmi, Programmi, Processi Un esempio: Il M. C. D. tra due numeri naturali x e y Programma: begin a: = x; b: = y; while a <> b do if a > b then a : = a - b; else b : = b - a; end. 6 PCD 2004/2005

Introduzione alla Programmazione Concorrente Algoritmi, Programmi, Processi Un esempio: Il M. C. D. tra

Introduzione alla Programmazione Concorrente Algoritmi, Programmi, Processi Un esempio: Il M. C. D. tra due numeri naturali x e y • x y a b Processo: Per esprimere lo stato dell’elaboratore ci limitiamo ai valori delle variabili a, b, x e y (dati di ingresso). Siano x = 18 e y = 24: Stato iniziale 18 18 24 24 18 - 18 24 18 6 18 24 12 6 Stato finale 18 24 6 6 7 PCD 2004/2005

Introduzione alla Programmazione Concorrente Algoritmi, Programmi, Processi ATT! • • Il programma è una

Introduzione alla Programmazione Concorrente Algoritmi, Programmi, Processi ATT! • • Il programma è una unità statica il processo è una unità dinamica • Se l’elaboratore e’ sequenziale => il processo è sequenziale: => la sequenza di eventi che costituisce il processo è totalmente ordinata => rappresentando il processo mediante il grafo orientato dei suoi eventi (grafo di precedenza) il grafo risulterà totalmente ordinato. 8 PCD 2004/2005

Introduzione alla Programmazione Concorrente Grafo di precedenza di un processo • nodi del grafo

Introduzione alla Programmazione Concorrente Grafo di precedenza di un processo • nodi del grafo rappresentano i singoli eventi • archi del grafo rapprresentano le precedenze temporali • se il processo è sequenziale, il grafo sarà a ordinamento totale: cioè ogni nodo avrà un predecessore (eccetto il nodo iniziale) ed un successore (eccetto il nodo finale). 9 PCD 2004/2005

Introduzione alla Programmazione Concorrente Processi Concorrenti • Un processo può essere rappresentato schematicamente mediante

Introduzione alla Programmazione Concorrente Processi Concorrenti • Un processo può essere rappresentato schematicamente mediante il grafo di precedenze • L’ ordinamento totale del grafo è solo in parte dovuto alla natura del problema da risolvere, in parte è dovuto alla natura sequenziale del calcolatore. • La natura del problema cioè impone di fatto solo un ordinamento parziale tra gli eventi. 10 PCD 2004/2005

Introduzione alla Programmazione Concorrente 11 PCD 2004/2005

Introduzione alla Programmazione Concorrente 11 PCD 2004/2005

Introduzione alla Programmazione Concorrente • Grafo di precedenza ad ordinamento parziale 12 PCD 2004/2005

Introduzione alla Programmazione Concorrente • Grafo di precedenza ad ordinamento parziale 12 PCD 2004/2005

Introduzione alla Programmazione Concorrente 13 PCD 2004/2005

Introduzione alla Programmazione Concorrente 13 PCD 2004/2005

Introduzione alla Programmazione Concorrente 14 PCD 2004/2005

Introduzione alla Programmazione Concorrente 14 PCD 2004/2005

Introduzione alla Programmazione Concorrente Abbiamo visto che: alcuni problemi possono essere risolti mediante processi

Introduzione alla Programmazione Concorrente Abbiamo visto che: alcuni problemi possono essere risolti mediante processi di calcolo non sequenziali cioè rappresentati da un grafo ad ordinamento parziale ß in questo caso il problema puo’ essere risolto da alcuni moduli sequenziali che lavorano in parallelo. ß Occorre quindi un elaboratore parallelo, parallelo in grado cioe’ di eseguire un numero arbitrario di operazioni contemporaneamente. ß Occorre quindi un linguaggio di programmazione con il quale poter descrivere questi algoritmi non sequenziali. Lo studio di questi linguaggi, dei loro compilatori e delle loro applicazioni prende il nome di Programmazione Concorrente 15 PCD 2004/2005

Introduzione alla Programmazione Concorrente Hardware Sist. Operativi Sist. Real Time Sist. Di Rete Software

Introduzione alla Programmazione Concorrente Hardware Sist. Operativi Sist. Real Time Sist. Di Rete Software Di base Programmazione concorrente Sist. Distribuiti Linguaggi di Programm. 16 PCD 2004/2005

Introduzione alla Programmazione Concorrente La macchina su cui un programma concorrente deve andare in

Introduzione alla Programmazione Concorrente La macchina su cui un programma concorrente deve andare in esecuzione deve quindi essere in grado di : – eseguire un certo numero n di processi sequenziali (n > 1) => la sua architettura deve essere quella di un multielaboratore – permettere ai processi di sincronizzarsi => deve fornire meccanismi primitivi di sincronizzazione e/o di comunicazione, comunicazione sfruttati dal compilatore per tradurre i costrutti linguistici di sincronizzazione fornite dal linguaggio ad alto livello. 17 PCD 2004/2005

Introduzione alla Programmazione Concorrente Architetture per sistemi concorrenti • SISD: Single instruction stream, single

Introduzione alla Programmazione Concorrente Architetture per sistemi concorrenti • SISD: Single instruction stream, single data stream Modello uniprocessore convenzionale (macchina di von Neumann) • SIMD: Single instruction stream, multiple data stream Piu’ processori che eseguono la stessa istruzione su dati diversi (array o vector instruction) • MIMD: Multiple instruction stream, multiple data stream Piu’ processori che eseguono istruzioni diverse; possiamo ulteriormente distinguere tra: • Sistemi multiprocessori con memoria comune • Sistemi a rete (senza memoria comune) 18 PCD 2004/2005

Introduzione alla Programmazione Concorrente Hardware per sistemi concorrenti uniprocessore Nuove architetture dataflow e macch.

Introduzione alla Programmazione Concorrente Hardware per sistemi concorrenti uniprocessore Nuove architetture dataflow e macch. funzionali CPU unica + processori dedicati LAN Local internet Vector e Array processor Multiprocessori Memoria condivisa Sistemi LAN/WAN 19 PCD 2004/2005

Introduzione alla Programmazione Concorrente • Un programma concorrente descrive l’ elaborazione come un insieme

Introduzione alla Programmazione Concorrente • Un programma concorrente descrive l’ elaborazione come un insieme di moduli sequenziali asincroni interagenti • Un linguaggio concorrente dovra’ contenere: – costrutti che permettano di dichiarare moduli di programma destinati ad essere eseguiti come processi sequenziali distinti – strumenti linguistici per specificare le interazioni tra i moduli. 20 PCD 2004/2005

Introduzione alla Programmazione Concorrente • Le interazioni tra i processi possono essere classificate: –

Introduzione alla Programmazione Concorrente • Le interazioni tra i processi possono essere classificate: – cooperazione: cooperazione interazione prevedibile e desiderata (sincronizzazione diretta o esplicita) • scambio di segnali temporali • scambio di informazione – competizione: competizione interazione prevedibile e non desiderata, ma necessaria (sincronizzazione indiretta o implicita) • mutua esclusione 21 PCD 2004/2005

Introduzione alla Programmazione Concorrente Programma sorgente scritto nel linguaggio L Compilatore Programma tradotto nel

Introduzione alla Programmazione Concorrente Programma sorgente scritto nel linguaggio L Compilatore Programma tradotto nel linguaggio oggetto per la macchina M Compilazione di programmi concorrenti 22 PCD 2004/2005

Architettura. Introduzione di una macchinaalla concorrente Programmazione Concorrente La macchina concorrente M in realta’

Architettura. Introduzione di una macchinaalla concorrente Programmazione Concorrente La macchina concorrente M in realta’ e’ una macchina virtuale o astratta aventi la caratteristiche funzionali desiderate, ma realizzata con tecniche software, basandosi su una macchina fisica M’ molto piu’ semplice. In particolare M’: – puo’ avere un numero molto inferiore di processori (anche uno solo) – puo’ essere priva di primitive di sincronizzazione/comunicazione: queste saranno data da uno strato di software che funzionalmente rappresenta il nucleo (kernel) del SO e che viene chiamato supporto run time del compilatore del linguaggio concorrente. Un nucleo fornisce sempre due meccanismi basilari: – meccanismo di multiprogrammazione – meccanismo di sincronizzazione/comunicazione 23 PCD 2004/2005

Introduzione alla Architettura di una macchina concorrente Programmazione Concorrente Macchina virtuale e macchina fisica

Introduzione alla Architettura di una macchina concorrente Programmazione Concorrente Macchina virtuale e macchina fisica 24 PCD 2004/2005