La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Lock binario.

Presentazioni simili


Presentazione sul tema: "Lock binario."— Transcript della presentazione:

1 Lock binario

2 Lock binario Un lock binario può assumere solo due valori locked e unlocked Le transazioni fanno uso di due operazioni lock(X) per richiedere l’accesso all’item X unlock(X) per rilasciare l’item X consentendone l’accesso ad altre transazioni

3 T1 T2 read(X) X:=X-N X:=X+M write(X) read(Y) Y:=Y+N write(Y)
Consideriamo le due transazioni T1 T2 read(X) X:=X-N X:=X+M write(X) read(Y) Y:=Y+N write(Y) T2 può essere interpretata come l’accredito sul conto corrente X di una somma di denaro M T1 può essere interpretata come il trasferimento di una somma di denaro N dal conto corrente X al conto corrente Y

4 prodotto da T1 viene perso
Consideriamo il seguente schedule di T1 e T2 T1 T2 read(X) X:=X-N X:=X+M write(X) read(Y) Y:=Y+N write(Y) Se il valore iniziale di X è X0 al termine dell’esecuzione dello schedule il valore di X è X0+M invece di X0-N+M L’aggiornamento di X prodotto da T1 viene perso

5 T1 T2 lock(X) read(X) X:=X-N X:=X+M write(X) unlock(X) lock(Y) read(Y) Y:=Y+N write(Y) unlock(Y)

6 dell’aggiornamento perso!
lock(X) read(X) X:=X-N write(X) unlock(X) X:=X+M lock(Y) read(Y) Y:=Y+N write(Y) unlock(Y) Schedule legale di T1 e T2 È risolto il problema dell’aggiornamento perso!

7 Modello per le transazioni
Una transazione è una sequenza di operazioni di lock e unlock ogni lock(X) implica la lettura di X ogni unlock(X) implica la scrittura di X T1 lock(X) unlock(X) lock(Y) unlock(Y)

8 Modello per le transazioni
Il nuovo valore viene calcolato da una funzione che è associata in modo univoco ad ogni coppia lock-unlock ed ha per argomenti tutti gli item letti (locked) dalla transazione prima dell’operazione di unlock T1 lock(X) unlock(X) f1(X) lock(Y) unlock(Y) f2(X,Y)

9 Equivalenza Due schedule sono equivalenti se le formule che danno i valori finali per ciascun item sono le stesse

10 Consideriamo le due transazioni
lock(X) lock(Y) unlock(X) f1(X) unlock(Y) f3(Y) unlock(Y) f2(X,Y) unlock(X) f4(X,Y) e lo schedule …

11 T1 T2 legge X0 lock(X) scrive f1(X0) unlock(X) lock(Y) legge Y0 unlock(Y) scrive f3(Y0) legge f3(Y0) scrive f2(X0, f3(Y0)) legge f1(X0) scrive f4(f1(X0),Y0) X0 valore iniziale di X Y0 valore iniziale di Y f4(f1(X0),Y0) valore finale di X

12 Consideriamo lo schedule seriale T1,T2
legge X0 lock(X) scrive f1(X0) unlock(X) legge Y0 lock(Y) scrive f2(X0,Y0) unlock(Y) legge f2(X0,Y0) scrive f3(f2(X0,Y0)) legge f1(X0) scrive f4(f1(X0),f2(X0,Y0)) f4(f1(X0),f2(X0,Y0) valore finale di X prodotto dallo schedule seriale T1,T2

13 Consideriamo lo schedule seriale T2,T1
lock(Y) legge Y0 unlock(Y) scrive f3(Y0) lock(X) legge X0 unlock(X) scrive f4(X0,Y0) legge f4(X0,Y0) scrive f1(f4(X0,Y0)) legge f3(Y0) scrive f2(f4(X0,Y0), f3(Y0)) f1(f4(X0,Y0)) valore finale di X prodotto dallo schedule seriale T2,T1

14 T1 T2 lock(X) unlock(X) lock(Y) unlock(Y) Pertanto lo schedule non è serializzabile in quanto produce per X un valore finale (f4(f1(X0),Y0)) diverso sia da quello (f4(f1(X0),f2(X0,Y0)) prodotto dallo schedule seriale T1,T2 sia da quello (f1(f4(X0,Y0))) prodotto dallo schedule seriale T2,T1

15 Consideriamo le due transazioni
lock(X) unlock(X) f1(X) unlock(X) f3(X) lock(Y) unlock(Y) f2(X,Y) unlock(Y) f4(X,Y) e lo schedule …

16 T1 T2 legge X0 lock(X) scrive f1(X0) unlock(X) legge f1(X0) scrive f3(f1(X0)) legge Y0 lock(Y) scrive f2(X0,Y0) unlock(Y) legge f2(X0,Y0) scrive f4(f1(X0), f2(X0,Y0))

17 Consideriamo lo schedule seriale T1,T2
legge X0 lock(X) scrive f1(X0) unlock(X) legge Y0 lock(Y) scrive f2(X0,Y0) unlock(Y) legge f1(X0) scrive f3(f1(X0)) legge f2(X0,Y0) scrive f4(f1(X0),f2(X0,Y0))

18 T1 T2 lock(X) unlock(X) lock(Y) unlock(Y) Pertanto lo schedule è serializzabile in quanto produce sia per X che per Y gli stessi valori finali prodotti dallo schedule seriale T1,T2

19 Testare la serializzabilità
Uno schedule è serializzabile se esiste uno schedule seriale tale che per ogni item l’ordine in cui le varie transazioni fanno un lock su quell’item coincide con quello dello schedule seriale

20 Testare la serializzabilità
Algoritmo 1 Dato uno schedule S Passo 1 crea un grafo diretto G (grafo di serializzazione) nodi: transazioni archi: Ti --> Tj (con etichetta X) se in S Ti esegue un unlock(X) e Tj esegue il successivo lock(X)

21 T1 T2 lock(X) unlock(X) lock(Y) unlock(Y) X T2 T1 Y

22 T1 T2 lock(X) unlock(X) lock(Y) unlock(Y) X ,Y T2 T1

23 Testare la serializzabilità
Passo 2 Se G ha un ciclo allora S non è serializzabile; altrimenti applicando a G l’ordinamento topologico si ottiene uno schedule seriale S’ equivalente ad S

24 Ordinamento topologico
Si ottiene eliminando ricorsivamente un nodo che non ha archi entranti T2 T1 T3 T6 T4 T5 T7 T9 T8 T4 T7 T5 T1 T8 T9 T2 T3 T6

25 T1 T2 lock(X) unlock(X) lock(Y) unlock(Y) X ,Y T2 T1 T1 T2

26 Teorema 1 (correttezza dell’Algoritmo1)
Uno schedule S è serializzabile se e solo se il suo grafo di serializzazione è aciclico

27 Protocollo di locking a due fasi
Una transazione obbedisce al protocollo di locking a due fasi, o più semplicemente è a due fasi, se prima effettua tutte le operazioni di lock (fase di locking) e poi tutte le operazioni di unlock (fase di unlocking)

28 Teorema 2 Sia T un insieme di transazioni. Se ogni transazione in T è a due fasi allora ogni schedule di T è serializzabile

29 Dimostrazione Teorema 2
Per assurdo: ogni transazione in S è a due fasi ma nel grafo di serializzazione c’è un ciclo T1 X1 T2 X2 Xk T3 Tk La transazione T1 non è a due fasi (contraddizione)

30 Pur non essendo T1 e T2 a due fasi, lo schedule
lock(X) unlock(X) lock(Y) unlock(Y) X,Y T2 T1 è serializzabile. D’altra parte…

31 T1 T2 … unlock(X) lock(X) lock(Y) unlock(Y) T1 … unlock(X) lock(Y) T2
… e uno schedule delle due transazioni… Se una transazione non è a due fasi… …esiste sempre una trasazione a due fasi… T1 T2 unlock(X) lock(X) lock(Y) unlock(Y) T1 unlock(X) lock(Y) T2 lock(X) lock(Y) unlock(X) unlock(Y) X T2 T1 Y … che non è serializzabile

32 Conclusione Solo se tutte le transazioni sono a due fasi possiamo avere la certezza che ogni schedule è serializzabile


Scaricare ppt "Lock binario."

Presentazioni simili


Annunci Google