Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Concetti di base della Programmazione Concorrente
2
Programmazione Sequenziale La programmazione è di solito insegnata con riferimento ad un esecutore sequenziale Un esecutore sequenziale svolge una sola azione alla volta sulla base di un programma sequenziale Lesecuzione di un programma sequenziale origina un processo sequenziale che conferisce un ordinamento totale alle azioni eseguite La programmazione di un esecutore concorrente, ovvero in grado di eseguire più istruzioni contemporaneamente, sebbene più difficile di quella tradizionale, ha forti motivazioni didattiche e pratiche
3
Programmazione Concorrente: Motivazioni Migliorare la comprensione di un SO che regola diverse attività parallele Sfruttare le prestazioni ottenibili da architetture multi-processor un programma sequenziale non giova di una architettura parallela Migliorare la reattività delle applicazioni allinput dellutente durante lunghe operazioni di I/O o di elaborazione La maggiore naturalezza con la quale si possono scrivere alcune tipologie di applicazioni (server, robotica, giochi, simulazioni di attività concorrenti)
4
Utilizzo dei Processori: Applicazione mono-thread
5
Utilizzo dei Processori: Applicazione multi-thread
6
Legge di Amdahl Nel riquadro viene indicata la frazione sequenziale del calcolo
7
Istruzione ed Area Memoria Per ragionare a vari livelli di granularità, consideriamo astrattamente i due concetti di istruzione ed area di memoria Istruzione; alcune possibili esemplificazioni: istruzione macchina istruzione firmware uno statement java un metodo di una classe java un intero programma una stored-procedure di un DBMS la scrittura di un blocco del gestore della concorrenza di un DBMS Area di Memoria; alcune possibili esemplificazioni: un bit, un byte, una parola macchina un campo di una struttura dati, una struttura dati intera un attributo, una tupla, una tabella, un intero db un blocco di un dispositivo di memoria secondaria
8
Processi Paralleli o Concorrenti Un processo sequenziale definisce un ordinamento totale sulle istruzioni Un processo parallelo definisce un ordinamento parziale sulle istruzioni su alcune istruzioni lesecutore è libero di scegliere quali iniziare prima e/o di eseguirle contemporaneamente Esempio: consideriamo un banale programma per calcolare e stampare le prime quattro potenze di un valore X. Si supponga di disporre di tre sole tipologie di istruzione: leggi scrivi *
9
Diagramma delle Precedenze begin 1. leggi X; 2. scrivi X; 3. X2 X * X; 4. scrivi X2; 5. X3 X2 * X; 6. scrivi X3; 7. X4 X2 * X2; 8. scrivi X4; end Algoritmo sequenziale
10
Diagramma delle Precedenze begin 1. leggi X; 2. scrivi X; 3. X2 X * X; 4. scrivi X2; 5. X3 X2 * X; 6. scrivi X3; 7. X4 X2 * X2; 8. scrivi X4; end Algoritmo sequenziale leggi X scrivi X scrivi X 2 X 3 X 2 *X scrivi X 3 scrivi X 4 X 2 X*X X 4 X 2 *X 2 Algoritmo parallelo
11
Esercizi Costruire un diagramma delle precedenze che esprima il massimo grado di parallelismo nel calcolo delle seguenti espressioni sullo stile dellesempio appena visto: (A+B)*(C+D)
12
Esecuzioni Sequenziale e Parallele Sia i una generica istruzione, in generale può essere divisibile in istruzioni più elementari Siano I i e F i gli eventi di inizio e fine esecuzione Date due istruzioni a e b consideriamo i 6 possibili ordinamenti in cui occorrono i quattro eventi I a, F a, I b, F b I a I b F a F b I a F a I b F b I a I b F b F a I b F b I a F a I b I a F a F b I b I a F b F a esecuzioni sequenzialiesecuzioni parallele
13
Sequenze di Esecuzione Ammissibili Una sequenza di esecuzione ammissibile è una sequenza di questi eventi che rispetta i vincoli espressi dal diagramma delle precedenze Ad un certo diagramma delle precedenze corrispondono molteplici sequenze di esecuzione ammissibili Ad es., con riferimento al precedente diagramma: Ii1Fi1Ii2Ii3Fi2Fi3Ii4Ii7Ii5Fi5Fi7Fi4Ii6Fi6Ii8Fi8Ii1Fi1Ii2Ii3Fi2Fi3Ii4Ii7Ii5Fi5Fi7Fi4Ii6Fi6Ii8Fi8
14
Sequenze di Interleaving Un caso speciale ma rilevante di sequenza di esecuzione ammissibile; consideriamo: un solo esecutore fisico istruzioni indivisibili due processi sequenziali A e B con istruzioni a 1 a 2 a 3 a 4… b 1 b 2 b 3 b 4… Diciamo sequenza di interleaving la sequenza scelta dallesecutore, ad esempio: a 1 b 1 b 2 a 2 b 3 a 3 a 4 b 4… Analogamente per tre o più processi
15
Processori Virtuali Nei sistemi operativi moderni, molteplici esecutori virtuali possono essere implementati con uno o più processori fisici attraverso tecniche di context- switching In base al numero di processori fisici disponibili ed al numero di processi esistenti, risultano possibili varie situazioni per far avanzare concorrentemente i processi interleaving overlapping una combinazione di queste due
16
Overlapping ed Interleaving Lesecutore può eseguire più istruzioni concorrentemente mediante overlapping interleaving combinazione CPU 0 CPU 1 CPU 0 CPU 1 CPU 0 t t t t t t PaPa PbPb PaPa PbPb PaPa PbPb
17
Quando Eseguire Concorrentemente? Dato un programma sequenziale, non è difficile costruire un equivalente diagramma delle precedenze Tuttavia è opportuno stabilire un criterio generale per capire se due istruzioni possono essere eseguite concorrentemente o meno: per ottenere diagrammi delle precedenze che esprimono il massimo grado di parallelismo possibile per automatizzare il calcolo dei vincoli che esprimono Quando è lecito eseguire concorrentemente due istruzioni i a e i b ?
18
Dominio e Rango Indichiamo con A, B, … X, Y, … unarea di memoria Una istruzione i dipende da una o più aree di memoria che denotiamo domain( i ), ovvero dominio di i altera il contenuto di una o più aree di memoria che denotiamo range( i ) di i, ovvero rango di i Ad es. per la procedura P procedure P begin X A + X; Y A * B; end domain( P )= {A, B, X} range( P )= {X, Y}
19
Condizioni di Bernstein Quando è lecito eseguire concorrentemente due istruzioni i a e i b ? se valgono le seguenti condizioni, dette Condizioni di Bernstein: 1. range( i a ) range( i b ) = Ø 2. range( i a ) domain( i b ) = Ø 3. domain( i a ) range( i b ) = Ø
20
Condizioni di Bernstein (2) Si osservi che non si impone alcuna condizione su domain( i a ) domain( i b ) Sono banalmente estendibili al caso di tre o più istruzioni Esempi di violazione per le due istruzioni: X Y + 1;X Y – 1; (violano la 1.) X Y + 1;Y X - 1 ;(violano la 2. e la 3.) scrivi X; X X + Y;(violano la 3.)
21
Effetti delle Violazioni Quando un insieme di istruzioni soddisfa le condizioni di Bernstein, il loro esito complessivo sarà sempre lo stesso indipendentemente dallordine e dalle velocità relative con cui vengono eseguite in altre parole, indipendentemente dalla particolare sequenza di esecuzione seguita dai processori ovvero, sarà sempre equivalente ad una loro esecuzione seriale Al contrario, in caso di violazione, gli errori dipendono dallordine e dalle velocità relative generando il fenomeno dellinterferenza
22
Esempio di Interferenza (1) procedure Prenota begin R a POSTI - 1; POSTI R a ; end La disponibilità di un volo di una compagnia aerea è memorizzata in POSTI=1. Due signori nel medesimo istante ma da due postazioni distinte, chiedono rispettivamente di prenotare lultimo posto e di disdire la prenotazione già effettuata Le due richieste vengono tradotte in queste sequenze di istruzioni elementari indivisibili: procedure Disdici begin R b POSTI + 1; POSTI R b ; end
23
Esempio di Interferenza (2) Lesecuzione concorrente da luogo ad una qualsiasi delle possibili sequenze di interleaving. Consideriamo un campione di tre sequenze: R a POSTI - 1; R b POSTI + 1; POSTI R b ; POSTI R a ; (POSTI=0) R a POSTI - 1; POSTI R a ; R b POSTI + 1; POSTI R b ; (POSTI=1) R b POSTI + 1; R a POSTI - 1; POSTI R a ; POSTI R b ; (POSTI=2) esecuzione sequenziale
24
Interferenza Si ha interferenza in presenza di due o più flussi di esecuzione almeno un flusso di esecuzione eseguente scritture Perché un flusso esegue un cambio di stato dellarea di memoria in maniera non atomica gli stati transienti che intercorrono tra quello iniziale a quello finale sono visibili a flussi di esecuzione diversi da quello che li sta producendo
25
Origine dei Fenomeni di Interferenza stato consistente iniziale stato consistente finale flusso di esecuzione flusso di esecuzione scrittore stato transiente
26
Errori Dipendenti dal Tempo Linterferenza causa errori particolarmente temibili perché dipendenti dalla sequenza di interleaving effettivamente eseguita Questi errori sono particolarmente temibili perché ciascuna sequenza di esecuzione può produrre effetti diversi la scelta della particolare sequenza adottata è (dal punto di vista del programmatore) casuale
27
Caratteristiche degli Errori Dipendenti dal Tempo irriproducibili: possono verificarsi con alcune sequenze e non con altre indeterminati: esito ed effetti dipendono dalla sequenza latenti: possono presentarsi solo con sequenze rare difficili da verificare, e testare: perché le tecniche di verifica e testing si basano sulla riproducibilità del comportamento
28
Il Programmatore e gli Errori Dipendenti dal Tempo Il programmatore non può fare alcuna assunzione: sulla particolare sequenza di interleaving eseguita, ovvero sulle velocità relative dei vari processori virtuali su un qualsiasi altro tipo di sincronismo legato alla specifica implementazione dei processori virtuali Un programma che implicitamente od esplicitamente basa la propria correttezza su ipotesi circa la velocità relativa dei vari processori, è scorretto Esiste una sola assunzione che possono fare i programmatori sulla velocità dei processori virtuali…
29
Assunzione di Progresso Finito Tutti i processori virtuali hanno una velocità finita non nulla Questa assunzione è lunica che si può fare sui processori virtuali e sulle loro velocità relative
30
Starvation & Deadlock Esistono due diverse situazioni che possono invalidare lassunzione di progresso finito starvation: quando un processo rimane in attesa di un evento che pure si verifica infinite volte un sistema di processi che garantisce contro questa evenienza si dice che gode della proprietà di fainess deadlock (o stallo): quando due o più processi rimangono in attesa di eventi che non potranno mai verificarsi a causa di condizioni cicliche nel possesso e nella richiesta di risorse esempio classico: un processo P a possiede una risorsa R 1 e richiede una risorsa R 2 già posseduta da un altro processo P b ; questultimo a sua volta richiede luso di R 1
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.