Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione...

47
1 Programmazione Concorrente: insieme delle tecniche, metodologie e strumenti per il supporto all'esecuzione di sistemi software composti da insiemi di attivita` svolte simultaneamente.

Transcript of Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione...

Page 1: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

1

Programmazione Concorrente:insieme delle tecniche, metodologie e strumentiper il supporto all'esecuzione di sistemi software

composti da insiemi di attivita` svoltesimultaneamente.

Page 2: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

2

Programmazione Concorrente:le origini

• La programmazione concorrente nasce negli anni 1960nell’ambito dei sistemi operativi.

• Introduzione dei canali o controllori di dispositivi :consentono l’esecuzione concorrente di operazioni di I/O edelle istruzioni dei programmi eseguiti dall'unita` dielaborazione centrale.

• Comunicazione tra canale ed unità centrale tramite il segnaledi interruzione.

• Come conseguenza dell’interruzione, parti di un programmapossono essere eseguite in un ordine non predicibile (->interferenze su variabili comuni).

Page 3: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

3

• Successivamente furono introdotti i sistemi multiprocessore.Inizialmente costosi, ora ampiamente diffusi. Macchine massivelyparallel processors.

• I sistemi multiprocessore consentono a differenti processiappartenenti alla stessa applicazione di essere eseguiti in parallelo equindi all’applicazione di essere eseguita più velocemente.

Problemi:- Come suddividere un’applicazione in processi?- Quanti processi utilizzare?- Come garantire la corretta sincronizzazione delle loro operazioni?

Queste decisioni dipendono dal tipo di architettura hardware e daltipo di applicazione.

Page 4: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

4

Tipi di architettura: Single processor

Primary memory

Level 2 cache

Level 1 cache

CPU

Page 5: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

5

Shared- Memory Multiprocessors

Memory Memory

Interconnection network

. . .

Cache

CPU

Cache

CPU

. . .

Page 6: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

6

• In sistemi a multiprocessore con un numero ridotto di processori (da2 a 30 circa), la rete di interconnessione è realizzata da un memorybus o da crossbar switch.

– UMA (Uniform Memory Access). Tempo di accesso uniforme daogni processore ad ogni locazione di memoria.

– Si chiamano anche symmetric multiprocessors (SMP).

• In sistemi con un numero elevato di processori (decine o centinaia) lamemoria è organizzata gerarchicamente (per evitare la congestionedel bus).– La rete di interconnessione è un insieme di switches e memorie

strutturato ad albero. Ogni processore ha memorie che sono piùvicine ed altre più lontane.

– NUMA (Non Uniform Access Time).

Page 7: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

7

Distributed-memory Multicomputers andNetworks

Memory

Cache

CPU

Memory

Cache

CPU

Interconnection network

. . .

Page 8: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

8

Distributed-memory: classificazione

• Multicomputer : I processori e la rete sono fisicamente vicini(nella stessa struttura): tightly coupled machine.– La rete di interconnessione rappresenta un cammino di

comunicazione tra i processori ad alta velocità e larghezza dibanda ( es. macchine a ipercubo).

• Network systems: i nodi sono collegati da una rete locale(es.Ethernet) o da una rete geografica (Internet): loosely coupledmultiprocessors.

• I nodi di una distributed memory machine possono essere o singoliprocessori o shared memory multiprocessor.

• Distributed shared memory: realizzazione distribuitadell’astrazione shared memory.

Page 9: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

9

Tipi di applicazionia) multithreaded/multitasking:• Applicazioni strutturate come un insieme di processi

(thread) per semplificare la loro programmazione.• Sono caratterizzati dal fatto che esistono più processi

che non processori per eseguire i processi.• I processi sono schedulati ed eseguiti

indipendentemente.

Esempi di applicazioni:• Sistemi a finestre su PC o Workstation• Sistemi operativi time-sharing e multiprocessor• Sistemi real time e di controllo dei processi

Page 10: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

10

Tipi di Applicazionib) Sistemi distribuiti• Le componenti dell’applicazione (intrinsecamente distribuite)

vengono eseguite su macchine collegate da una rete locale retelocale o geografica

• I processi comunicano scambiandosi messaggi.

Esempi di applicazioni:– File server in rete– Data-base systems per applicazioni bancarie etc..– Web server su Internet– Sistemi fault tolerant

• Tipica organizzazione : client- server.• I componenti in un sistema distribuito sono spesso

multithreaded applications

Page 11: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

11

Tipi di Applicazionic) Applicazioni parallele:• Obiettivo: risolvere un dato problema più velocemente (o un

problema di dimensioni più elevate nello stesso tempo).• Sono eseguite su processori paralleli facendo uso di algoritmi

paralleli.

Esempi di applicazioni:• Applicazioni scientifiche che modellano e simulano fenomeni

fisici complessi (es. previsioni del tempo,evoluzione del sistemasolare etc..)

• Elaborazione di immagini. La creazione di effetti speciali neifilm, etc.

• Problemi di ottimizzazione di grandi dimensioni

Page 12: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

12

Processi non sequenziali e tipi diinterazione

Page 13: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

13

Algoritmo, programma, processo• Algoritmo: Procedimento logico che deve essere eseguito per

risolvere un determinato problema.• Programma: Descrizione di un algoritmo mediante un opportuno

formalismo (linguaggio di programmazione), che rende possibilel’esecuzione dell’algoritmo da parte di un particolare elaboratore.

• Processo: insieme ordinato degli eventi cui dà luogo unelaboratore quando opera sotto il controllo di un programma.

Elaboratore: entità astratta realizzata in hardware e parzialmente insoftware, in grado di eseguire programmi (descritti in un dato linguaggio).

Evento: Esecuzione di un’operazione tra quelle appartenenti all’insieme chel’elaboratore sa riconoscere ed eseguire; ogni evento determina unatransizione di stato dell'elaboratore

Un programma descrive non un processo, ma un insieme di processi,ognuno dei quali è relativo all’esecuzione del programma da partedell’elaboratore per un determinato insieme di dati in ingresso.

Page 14: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

14

Processo sequenzialeSequenza di stati attraverso i quali passa l’elaboratoredurante l’esecuzione di un programma (storia di un processoo traccia dell’esecuzione del programma).

Esempio: valutare il massimo comune divisore tra due numerinaturali x e y:a) Controllare se i due numeri x e y sono uguali, nel qual

caso il loro M.C.D. coincide con il loro valoreb) Se sono diversi, valutare la loro differenzac) Tornare ad a) prendendo in considerazione il più piccolo

dei due e la loro differenza

Page 15: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

15

Esempio: M.C.D. di x e y (numeri naturali)int MCD(int x, int y)

{ a = x; b = y;

while (a != b)

if (a > b) a = a – b

else b = b-a;

return a;

}

R=MCD(18,24);

66624--b

612181818-a

242424242424y

181818181818x

statoiniziale

statofinale

Page 16: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

16

• Più processi possono essere associati allo stesso programma(istanze).

• Ciascuno rappresenta l’esecuzione dello stesso codice condati di ingresso diversi.

Esempi:• Il compilatore di un linguaggio può dare luogo a più processi,

ciascuno relativo alla traduzione di un particolare programma.• Il software di controllo può dare luogo a più processi che

controllano dispositivi uguali o diversi

Page 17: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

17

Grafo di precedenza• Un processo può essere rappresentato tramite un

grafo orientato detto grafo di precedenza delprocesso

• I nodi del grafo rappresentano i singoli eventi delprocesso, mentre gli archi identificano leprecedenze temporali tra tali eventi

• Un evento corrisponde all’esecuzione diun’operazione tra quelle appartenenti all’insieme chel’elaboratore sa riconoscere ed eseguire

Es. MCD: essendo il processo strettamente sequenziale,il grafo di precedenza è ad Ordinamento Totale(ogni nodo ha esattamente un predecessore ed unsuccessore)

a = 18

b = 24

b = 6

a = 12

a = 6

Page 18: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

18

Processi non sequenziali• L’ordinamento totale di un grafo di precedenza deriva dalla

natura sequenziale del processo (a sua volta imposta dallanatura sequenziale dell’elaboratore).

• In taluni casi l’ordinamento totale è implicito nel problema darisolvere; spesso è un’imposizione che deriva dalla naturasequenziale dell’elaboratore.

• Esistono molti esempi di applicazioni che potrebbero piùnaturalmente essere rappresentate da processi nonsequenziali.

Processo non sequenziale: l'insieme degli eventi che lodescrive e` ordinato secondo una relazione d'ordine parziale.

Page 19: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

19

Esempio: valutazione dellʼespressione(3 * 4) + (2 + 3) * (6 - 2)

Grafo di precedenza adordinamento totale:

3 * 4 = 12

2 + 3 = 5

6 - 2 = 4

5 * 4 = 20

12 + 30 = 32

Grafo di precedenza adordinamento parziale:

3 * 4 = 12 2 + 3 = 5 6 - 2 = 4

5 * 4 = 20

12 + 30 = 32

INIZIO

FINE

Page 20: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

20

Esempio – segue:

• La logica del problema non impone un ordinamento totalefra le operazioni da eseguire; ad esempio è indifferente chevenga eseguito (2 + 3) prima di eseguire (6 - 2) o viceversa.

• Entrambe le operazioni precedenti devono invece essereeseguite prima del prodotto dei loro risultati.

• Certi eventi del processo sono tra loro scorrelati daqualunque relazione di precedenza temporale il risultatodell’elaborazione è indipendente dall’ordine con cui gli eventiavvengono.

• Molti settori applicativi possono essere rappresentati daprocessi non sequenziali: sistemi in tempo reale, sistemioperativi, sistemi di simulazione, etc…

Page 21: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

21

Esempio: Elaborazione di dati su un file sequenziale

elaborazioneNrec

Nrec

file 1 file 2

buffer B;

int i;

for(i=1; i<=N; i++)

{ lettura(B); /* L */

elaborazione(B); /* E */

scrittura(B); /* S */

}

Grafo di precedenza adordinamento totale:

inizio

L1

E1

S1

Ln

En

Sn

fine

Page 22: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

22

Esempio – segue:

• La logica del problema impone due soli vincoli1. Le operazioni di lettura (o elaborazione o scrittura)

dovranno essere eseguite in sequenza sugli N record.2. Le operazioni di lettura, elaborazione e scrittura di un

record dovranno essere eseguite in quest’ordine.

• Non esiste alcuna relazione logica di precedenzatra la lettura dell’i-esimo e la scrittura dell’(i-1)-esimo.

• Il grafo degli eventi più naturale risulta esserequello ad ordinamento parziale.

Page 23: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

23

Esempio – segue: grafo ad ordinamento parziale

inizio

L1

L2

L3

E1

E2

E3

fine

S1

S2

S3

Ln En Sn

• Vincolo di sincronizzazione:ordinamento di eventi

• Un arco che collega due nodirappresenta il vincolo diprecedenza tra icorrispondenti eventi

Page 24: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

24

• L’esecuzione di un processo non sequenziale richiede:– elaboratore non sequenziale– linguaggio di programmazione non sequenziale

Elaboratore non sequenziale (in grado di eseguire piùoperazioni contemporaneamente):– architettura parallela, sistemi multielaboratori (a)– sistemi monoelaboratori (b)

P1

P2

t t

P1 P1

P2 P2

(a) (b)

Linguaggi non sequenziali (o concorrenti): Caratteristicacomune: consentire la descrizione di un insieme di attivitàconcorrenti tramite moduli sequenziali che possono essereeseguiti in parallelo (processi sequenziali)

Page 25: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

25

Scomposizione di un processo nonsequenziale

• Scomposizione di un processo non sequenziale in uninsieme di processi sequenziali, eseguiti“contemporaneamente”, ma analizzati e programmatiseparatamente.

• Consente di dominare la complessità di un algoritmo nonsequenziale

• Le attività rappresentate dai processi possono essere:

• completamente indipendenti

• interagenti

Page 26: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

26

e11

e12

e13

e21

e22

e23

e31

e32

e33

P1 P2 P3

• L’evoluzione di un processo non influenza quella dell’altro

Processi indipendenti

Page 27: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

27

• Nel caso di grafi connessi ad ordinamento parziale, lascomposizione del processo globale in processi sequenzialiconsiste nell’individuare sul grafo un insieme P1….Pn disequenze di nodi (insiemi di nodi totalmente ordinati).

L1

L2

L3

E1

E2

E3

S1

S2

S3

P1

P2

P3

• Presenza di vincoli di precedenza tra le operazioni deiprocessi (espresse dagli archi) o vincoli di sincronizzazione

• In questo caso i tre processi non sono fra loro indipendenti(processi interagenti)

Page 28: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

28

Processi interagenti• Le interazioni tra i processi di lettura, elaborazione e

scrittura sono relative ad uno scambio di informazioni. Idati su cui opera il processo di elaborazione sono forniti dalprocesso di lettura.

• Vincolo di sincronizzazione: vincolo imposto da ogni arco delgrafo di precedenza che collega nodi di processi diversi.

• I due processi, quando arrivano ad un punto di interazionecorrispondente ad uno scambio di informazioni, devonosincronizzarsi, cioè ordinare i loro eventi come specificatodal grafo di precedenza.

Page 29: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

29

Tipi di decomposizione

• La decomposizione di un grafo di precedenza ad ordinamento parzialein un insieme di sequenze di nodi (processi) può essere fatta in varimodi.

ESEMPIO: Lettura, elaborazione e scrittura dell’i-esimo record(i=1,2,…,n)

• I vincoli di sincronizzazione sono gli archi verticali del grafo.• La scelta più idonea del tipo di decomposizione in processi sequenziali

di un’elaborazione non sequenziale è quella per la quale le interazionitra processi sono poco frequenti così da agevolare l’esecuzioneseparata della singole attività.

LiEi

Si

Page 30: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

30

Interazione tra processi

Le possibile forme di interazione tra processiconcorrenti sono:– Cooperazione– Competizione– Interferenza

Page 31: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

31

Interazione tra processiCOOPERAZIONE: comprende tutte le interazioni prevedibili e

desiderate, insite cioè nella logica dei programmi (archi, nel grafodi precedenza ad ordinamento parziale).

Prevede scambio di informazioni:• segnali temporali (senza trasferimento di dati)• dati (messaggi) comunicazione

In entrambi i casi esiste un vincolo di precedenza(sincronizzazione) tra gli eventi di processi diversi

Page 32: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

32

Scambio di segnali temporali

Esempio:

• Processo P, costituito da tre operazioni p1, p2, p3; deveessere eseguito ogni due secondi.

• Processo Q, costituito da quattro operazioni q1, q2, q3,q4; deve essere eseguito ogni tre secondi.

• Processo O (orologio), ha il compito di registrare ilpassare del tempo e di attivare periodicamente i processiP e Q inviando segnali temporali.

• I nodi O1 , O2, … rappresentano le azioni del processo Oe denotano i secondi scanditi dall’orologio.

• Gli archi che collegano i nodi di O con i nodi di P (Q)rappresentano i vincoli di precedenza dovuti al fatto cheP (Q) deve essere riattivato ogni due (tre) secondi.

Page 33: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

33

p’1

processo P processo O processo Q

p’2

p’3

p’’1

p’’2

p’’3

O1

O2

O3

O4

O5

O6

q’1

q’2

q’3

q’4

q’’1

q’’2

Page 34: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

34

• Conclusa un'esecuzione, P (Q) deve attendere un nuovosegnale di attivazione prima di ricominciare.

• Relazione di causa ed effetto tra l’esecuzionedell’operazione di invio da parte del processo mittente el’esecuzione dell’operazione di ricezione da parte delprocesso ricevente.

• Vincolo di precedenza tra questi eventi (sincronizzazionedei due processi).

Comunicazione: è previsto uno scambio di dati.

Linguaggio di programmazione: deve fornire costruttilinguistici atti a specificare la sincronizzazione e laeventuale comunicazione tra i processi

Page 35: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

35

COMPETIZIONE

La macchina concorrente su cui i processi sonoeseguiti mette a disposizione un numero limitato dirisorse condivise tra i processi.

La competizione ha come obiettivo il coordinamentodei processi nell’accesso alle risorse condivise.

Ad esempio, per risorse che non possono essere usatecontemporaneamente da più processi, è necessarioprevedere meccanismi di competizione.

Interazione prevedibile e non desiderata, manecessaria.

Page 36: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

36

CompetizioneEsempio: Mutua esclusione

• Due processi P e Q devono usare in certi istanti una comune stampante

Sp={ps1, ps2,…, psn} e Sq={qs1, qs2,…,qsn}

sono le sequenze di istruzioni che P e Q devono rispettivamenteeseguire per produrre un messaggio sulla stampante

• Le due sequenze devono essere eseguite in modo mutuamente esclusivo

px ps1 ps2 psn pyprocesso P

qx qs1qs2

qsn qyprocesso Q

px e py (qx e qy) denotano rispettivamente l’ultima operazioneeseguita da P (Q) prima della stampa e la prima eseguita dopo lastampa.

Q usa la stampante

P usa la stampante

Page 37: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

37

• L’interazione si estrinseca in un vincolo di precedenza tra eventi diprocessi diversi (psn deve precedere qs1), cioè in un vincolo disincronizzazione.

• Non è (come nel caso della comunicazione) un vincolo di causa edeffetto, cioè l’ordine con cui devono avvenire due eventi non èsempre lo stesso. Basta che sia verificata la proprietà di mutuaesclusione.

px ps1 ps2 psn py

qx qs1 qs2 qsn qyprocesso Q

processo P

Q usa la stampante

P usa la stampante

Page 38: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

38

Sezione Critica• La sequenza di istruzioni con le quali un processo accede a un

oggetto condiviso con altri processi prende il nome di sezionecritica.

• Ad un oggetto puo` essere associata una sola sezione critica(usata da tutti i processi) o più sezioni critiche (classe di sezionicritiche).

• La regola di mutua esclusione stabilisce che:Sezioni critiche appartenenti alla stessa classe devono

escludersi mutuamente nel tempo.Nell'esempio precedente:• Sp e Sq sono sezioni critiche;• Sp e Sq appartengono alla classe di sezioni critiche associate alla

stampante;

Page 39: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

39

Cooperazione: sincronizzazione diretta o esplicita

Competizione: sincronizzazione indiretta o implicita

Interferenza: interazione provocata da errori diprogrammazione:1. Inserimento nel programma di interazioni tra processi non

richieste dalla natura del problema

2. Erronea soluzione a problemi di interazione (cooperazione ecompetizione) necessarie per il corretto funzionamento delprogramma

E` un'interazione non prevista e non desiderata

• dipende dalla velocità relativa dei processi

• gli errori possono manifestarsi nel corsodell’esecuzione del programma a seconda delle diversecondizioni di velocità di esecuzione dei processi

(errori dipendenti dal tempo)

Page 40: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

40

• Esempio di interferenza del primo tipo:

Solo P deve operare su una risorsa R. Per un errore diprogrammazione viene inserita in Q un’istruzione chemodifica lo stato di R. La condizione di errore sipresenta solo per particolari velocità relative deiprocessi.

• Esempio di interferenza del secondo tipo:

P e Q competono per una stampante. Si garantisce lamutua esclusione solo per la stampa della prima linea.La condizione di errore si presenta solo perparticolari velocità relative dei processi.

Uno degli Obiettivi fondamentali dellaprogrammazione concorrente è

l’eliminazione delle interferenze.

Page 41: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

41

ARCHITETTURE E LINGUAGGI PER LAPROGRAMMAZIONE CONCORRENTE

Page 42: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

42

Linguaggi per la programmazioneconcorrente

• Disponendo di macchine concorrenti (in grado dieseguire più processi sequenzialicontemporaneamente) e di un linguaggio diprogrammazione con il quale descrivere algoritmi nonsequenziali, è possibile scrivere e far eseguireprogrammi concorrenti.

• L’elaborazione complessiva può essere descritta comeun insieme di processi sequenziali asincroniinteragenti

Page 43: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

43

Proprietà di un linguaggio per laprogrammazione concorrente

• Contenere appositi costrutti con i quali sia possibile dichiararemoduli di programma destinati ad essere eseguiti come processisequenziali distinti.

• Non tutti i processi costituenti un’elaborazione vengono eseguiticontemporaneamente. Alcuni processi vengono svolti se,dinamicamente, si verificano particolari condizioni. E’ quindinecessario specificare quando un processo deve essere attivatoe terminato.

• Occorre che siano presenti strumenti linguistici per specificarele interazioni che dinamicamente potranno aversi tra i variprocessi

Page 44: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

44

Architettura di una macchina concorrente

• Difficilmente M ha una struttura fisica con tante unità dielaborazione quanti sono i processi da svolgerecontemporaneamente durante l’esecuzione di un programmaconcorrente.

• M è una macchina astratta ottenuta con tecniche software (ohardware) basandosi su una macchina fisica M’ molto piùsemplice (con un numero di unità di elaborazione moltominore del numero dei processi).

Programmi sorgentescritti nel linguaggio

LCompilatore di L

Programmi tradottinel linguaggio oggetto

per la macchina M

Page 45: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

45

macchina astratta M

meccanismo di multiprogrammazionemeccanismo di sincronizzazione

macchina fisica M’ (hardware)

nucleo del sistema

Oltre ai meccanismi di multiprogrammazione e sincronizzazione è presente anche un meccanismo di protezione(controllo degli accessi alle risorse).

• Importante per rilevare eventuali interferenze tra iprocessi.• Può essere realizzato in hardware o in software nelsupporto a tempo di esecuzione.• Capabilities e liste di controllo degli accessi

Page 46: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

46

• Il nucleo corrisponde al supporto a tempo di esecuzione delcompilatore di un linguaggio concorrente.

• Nel nucleo sono sempre presenti due funzionalità base:• meccanismo di multiprogrammazione• meccanismo di sincronizzazione e comunicazione

• Il primo meccanismo è quello preposto alla gestione delle unità dielaborazione della macchina M’ (unità reali) consentendo ai variprocessi eseguiti sulla macchina astratta M di condividere l’usodelle unità reali di elaborazione (scheduling)

• Il secondo meccanismo è quello che estende le potenzialità delleunità reali di elaborazione, rendendo disponibile alle unità virtualistrumenti mediante i quali sincronizzarsi e comunicare.

Page 47: Programmazione Concorrente - LIAlia.disi.unibo.it/Courses/som1011/materiale/01.programmazione concorrente.pdf · 13 Algoritmo, programma, processo • Algoritmo: Procedimento logico

47

Architettura di MDue diverse organizzazioni logiche:

– Gli elaboratori di M sono collegati ad un’unica memoria principale(sistemi multiprocessore)

– Gli elaboratori di M sono collegati da una sottorete dicomunicazione, senza memoria comune (sistemi distribuiti).

Le due precedenti organizzazioni logiche di M definiscono due modelli diinterazione tra i processi:1. Modello a memoria comune, in cui l’interazione tra i processi avviene su

oggetti contenuti nella memoria comune (modello ad ambiente globale).

2. Modello a scambio di messaggi, in cui la comunicazione e lasincronizzazione tra processi si basa sullo scambio di messaggi sulla reteche collega i vari elaboratori (modello ad ambiente locale ).