Lock binario.

Slides:



Advertisements
Presentazioni simili
BDE-TRANS 1 Gestione di transazioni concorrenti. BDE-TRANS 2 Lock Principio: –Tutte le letture sono precedute da r_lock (lock condiviso) e seguite da.
Advertisements

Codici prefissi Un codice prefisso è un codice in cui nessuna parola codice è prefisso (parte iniziale) di un’altra Ogni codice a lunghezza fissa è ovviamente.
Le Derivate Applicazioni. Applicazioni della derivata Definizione 1 sia f:(a,b)  R una funzione numerica. f è crescente (decrescente) in (a,b) se, per.
Controllo della concorrenza basato sui timestamp.
Anno Architetture dati DBMS Centralizzati Controllo di concorrenza Carlo Batini.
2a + 10b abx2 3a + 1 y 2 a + 1 x + 2y a − Espressioni algebriche
La seguente matrice è una matrice delle distanze di un’istanza del problema del Commesso Viaggiatore. Calcolare un lower bound per il valore del ciclo.
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi L’ausilio delle occorrenze Circuiti di ordinamento Lezione n°5.
CONTROLLO DELLA CONCORRENZA
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Cammini minimi in grafi:
Equazioni differenziali - introduzione
Le primitive di una funzione
Protocollo di locking a due fasi stretto
Write-only, read-only.
(7x + 8x2 + 2) : (2x + 3) 8x2 + 7x + 2 2x + 3 8x2 + 7x + 2 2x + 3 4x
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi
Definizione e caratteristiche
L'ABC della statistica LA MEDIA ARITMETICA
Alberi binari Definizione Sottoalberi Padre, figli
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
B-alberi e alberi autoaggiustanti
Equazioni e disequazioni
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Algoritmi e Strutture Dati
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi
Deadlock e livelock.
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Lock a tre valori.
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Usi (meno scontati) della visita DFS
ATOMICITÀ Il tipo di atomicità di un programma PL/SQL è stabilito dall’ambiente chiamante oppure dal programma Gestione atomicità: COMMIT SAVEPOINT nome_punto.
Lezione n°4 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
I MONOMI.
Tecnologia di un Database Server
Lock.
Lezione n°12 Prof.ssa Rossella Petreschi
Codicfiche Interi Complemento alla base.
Algoritmi per il flusso nelle reti
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Le primitive di una funzione
Schema generale, visita in ampiezza e profondità.
Algoritmi e Strutture Dati
Dipendenze funzionali
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Usi (meno scontati) della visita DFS
Algebra di Boole e Funzioni Binarie
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Automi e stringhe Lezione n°24 Prof.ssa Rossella Petreschi
Ottimizzazione distribuita
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Alberi di ricerca Lezione n°4
E n e r g i a.
Sistemi e Tecnologie della Comunicazione
Cammini minimi in grafi:
Relazione tra due insiemi:
Il problema del flusso nelle reti
Algoritmi.
Definizione e caratteristiche
Transcript della presentazione:

Lock binario

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

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

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

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)

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!

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)

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)

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

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 …

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

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

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

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

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 …

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))

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))

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

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

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)

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

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

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

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

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

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

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)

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

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)

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…

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

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