Sei sulla pagina 1di 18

Processi, thread e concorrenza



La concorrenza in informatica
ogni volta che ho più processi in esecuzione
contemporaneamente
il problema esiste quando ci sono delle risorse
condivise
Se non si hanno interazioni non si ha
concorrenza (sequenzialità)


Esempio concorrenza
senza condivisione
dato un vettore di N interi (N molto grande),
vogliamo stampare un vettore contenente la radice
quadrata di ogni numero del vettore di partenza
[1,2,3] => [1, sqrt(2), sqrt(3)]


Esempio concorrenza senza
condivisione
usando i thread
N/ numero core = K ( quanti elementi per ogni
thread)
numero core = 2 core 0 -> 0…K-1 core 1 -> K…N
metodo divide and conquer


Teoria a pratica
Le interazioni tra processi in esecuzione possono
essere molto complesse. Per questo si operato a
due livelli.
teoria : capire come gestire la concorrenza e le
problematiche relative
programmazione: sviluppo di tecniche di
programmazione (programmazione
concorrente) e di linguaggi con delle primitive
dedicate alla gestione della concorrenza.

Strumenti per il
programmatore




Problematiche
legate all’accesso ad una risorsa condivisa. Le
categorie dei problemi possibili sono:
Race Condition: il risultato nale di una serie di
operazioni da parte di più processi dipende
dall’ordine in cui vengono eseguite le
operazioni. soluzione: un solo processo alla
volta accede a una risorsa. mutua esclusione.


Deadlock
Deadlock: P1 P2 R1 R2. P1 ha R1 e P2 ha R2. Se
P1 per terminare ha bisogno di R2 e P2 per
terminare ha bisogno di R1…



Deadlock: soluzioni
preemption, Sembra facile ma non è… dipende
dal tipo di risorsa
checkpoint: registri che de niscono come sono
condivise le risorse.
kill di un processo coinvolto nel deadlock
le soluzioni “fattibili” cercano di prevedere i
deadlock Algoritmo del banchiere


Starvation (inedia)
Un processo va in starvation quando non risce mai
ad ottenere le risorse di cui ha bisogno.


Strumenti per la
programmazione concorrente
librerie di estensione del compilatore
(openmp)
linguaggi dedicati alla programmazione
concorrente
costrutti messi a disposizione dal sistema
operativo

Mutua Esclusione
thread A,B
risorsa condivisa: int pippo
Risponde alla domanda: “pippo” è libera? chi
sta usando “pippo”?
de nire le “sezioni critiche” (le sezioni di codice
che accedono o manipolano dati condivisi)


Problema dei filosofi a cena


F1 prende prima f1 e POI f2
F2 prende prima f2 e POI f3
F3 prende prima f3 e POI f4
F4 prende prima f4 e POI f5
F5 prende prima f1 e POI f5
Problema dei loso a cena
 

Potrebbero piacerti anche