Introduzione alla Programmazione Concorrente La programmazione concorrente nasce
- Slides: 24
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. 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 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 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 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 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 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 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 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 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 • Grafo di precedenza ad ordinamento parziale 12 PCD 2004/2005
Introduzione alla Programmazione Concorrente 13 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 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 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 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 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. 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 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: – 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 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’ 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 24 PCD 2004/2005
- Programmazione concorrente e distribuita
- Programmazione concorrente
- Esercizi programmazione concorrente java
- Introduzione alla psicologia della comunicazione
- Introduzione alla finanza
- Introduzione alla psicologia della comunicazione
- Introduzione alla sociologia ritzer
- Reyneri introduzione alla sociologia del mercato del lavoro
- Introduzione alla psicometria
- Geometria origine parola
- Manuale pedagogia generale
- Como el vino de jerez y el vinillo de rioja
- Para que mi amor no sea un sentimiento
- Modos de definir um plano
- Dove nasce cezanne
- Rio arade desagua
- Apuleio dove nasce
- Montale nasce
- Ninguem nasce sabendo tudo
- Poveri in riva al mare
- La letteratura latina delle origini
- Narrativa naturalista
- Rios que nascem em espanha
- Emile zola corrente letteraria
- Valerio marziale