Title: I Segnali
1 Concetti di base dellaProgrammazione
Concorrente
2Programmazione 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
3Programmazione 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)?
4Utilizzo dei Processori Applicazione mono-thread
5Utilizzo dei Processori Applicazione
multi-thread
6Legge di Amdahl
Nel riquadro viene indicata la frazione
sequenziale del calcolo
7Istruzione 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
8Processi 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 ltvariabilegt
- scrivi ltvariabilegt
- ltvariabilegt ? ltvariabilegt ltvariabilegt
9Diagramma delle Precedenze
Algoritmo sequenziale
- 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
10Diagramma delle Precedenze
leggi X
Algoritmo parallelo
Algoritmo sequenziale
- 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
scrivi X
X2 ?XX
scrivi X2
X3 ?X2X
X4?X2X2
scrivi X3
scrivi X4
11Esercizi
Costruire un diagramma delle precedenze che
esprima il massimo grado di parallelismo nel
calcolo delle seguenti espressioni sullo stile
dellesempio appena visto (AB)(CD)?
12Esecuzioni Sequenziale e Parallele
- Sia i una generica istruzione, in generale può
essere divisibile in istruzioni più elementari - Siano Ii e Fi gli eventi di inizio e fine
esecuzione - Date due istruzioni a e b consideriamo i 6
possibili ordinamenti in cui occorrono i quattro
eventi Ia, Fa, Ib, Fb - Ia Ib Fa Fb
- Ia Fa Ib Fb Ia Ib Fb Fa
- Ib Fb Ia Fa Ib Ia Fa Fb
- Ib Ia Fb Fa
- esecuzioni sequenziali esecuzioni parallele
13Sequenze 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
Ii1Fi1Ii2Ii3Fi2Fi3Ii4Ii7Ii5Fi5Fi7Fi4Ii6Fi6Ii8Fi8
14Sequenze 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
- a1a2a3a4
- b1b2b3b4
- Diciamo sequenza di interleaving la sequenza
scelta dallesecutore, ad esempio - a1b1b2a2b3a3a4b4
- Analogamente per tre o più processi
15Processori 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
16Overlapping ed Interleaving
- Lesecutore può eseguire più istruzioni
concorrentemente mediante - overlapping
- interleaving
- combinazione
CPU0
Pa
t
CPU1
Pb
t
CPU0
CPU0
Pa
t
Pb
CPU0
CPU0
t
Pa
CPU0
CPU1
t
Pb
CPU1
CPU0
t
17Quando 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 ia e ib ?
18Dominio 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
19Condizioni di Bernstein
- Quando è lecito eseguire
- concorrentemente due istruzioni ia e ib ?
- se valgono le seguenti condizioni, dette
Condizioni di Bernstein - range(ia) n range(ib) Ø
- range(ia) n domain(ib) Ø
- domain(ia) n range(ib) Ø
20Condizioni di Bernstein (2)?
- Si osservi che non si impone alcuna condizione su
- domain(ia) n domain(ib)?
- 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.)?
21Effetti 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 -
22Esempio di Interferenza (1)?
- La disponibilità di un volo di una compagnia
aerea è memorizzata in POSTI1. 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 Prenota begin Ra ? POSTI - 1 POSTI
? Ra end
procedure Disdici begin Rb ? POSTI 1 POSTI
? Rb end
23(No Transcript)
24Interferenza
- 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(No Transcript)
26Errori 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
27Caratteristiche 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
28Il 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
29Assunzione 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
30Starvation 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 Pa possiede una
risorsa R1 e richiede una risorsa R2 già
posseduta da un altro processo Pb questultimo
a sua volta richiede luso di R1