Soit le langage L trs simple qui possde les instructions suivantes :
VAR :=val affecte la variable globale VAR la valeur val Lire(X) retourne la valeur de lobjet X de la base de donnes Ecrire(X, val) crit la valeur val dans lobjet X. val peut tre uniquement une variable globale, une constante ou bien une expression arithmtique faite de variables globales et de constantes On dispose galement des oprateurs arithmtiques +, -, *, /, respectivement addition, soustraction, multiplication et division. Pour simplifier, les variable globales nont pas tre dclares.
Soit les deux transactions T i et T j suivantes. On suppose que ltat initial de lobjet A vaut 10, celui de lobjet B vaut 20. On suppose que T i.1.1 est la premire obtenir le verrou sur A. Les transactions feuilles demandent les verrous ncessaires une opration juste avant de leffectuer.
1. Est-il possible dassister un interblocage entre Ti et Tj (expliquer pourquoi) ?
Il nest pas possible davoir un interblocage car le verrou sur A ne sera pris par T.j.1 que lorsque Ti aura entierement fini. Or Tj2 ne pourra demander son verrou sur B quaprs que Tj1 soit excute, donc il est impossible que Ti21 attende Tj2 sur B
2. Quels sont les tats intermdiaires (aprs chaque sous-transaction, y compris les nuds non-feuille) et ltat final de ces deux objets aprs excution des deux transactions.
Sous-transaction Valeur de A Sous transaction Valeur de B T i
// T i.1
T i.1.1
T i.1.2
V :=Lire(A) Ecrire(A,V+1) ; T i.2
T i.2.1
T i.2.2
; V :=Lire(A) Ecrire(A,V*2) W :=Lire(B) Ecrire(B,W+1) W :=Lire(A) Ecrire(A,W-3) T j
T j.1
T j.2
; Z :=Lire(A) Ecrire(A,Z*3) Z :=Lire(B) Ecrire(B,Z*3) T.i.1.1
Valeur finale de A Valeur finale de B
Sous-transaction Valeur de A Sous transaction Valeur de B T.i.1.1 11 T.i.1.1 20 T.i.1.2 22 T.i.1.2 20 T.i.1 22 T.i.1 20 T.i.2.1 22 T.i.2.1 21 T.i.2.2 19 T.i.2.2 21 T.i.2 19 T.i.2 21 T.i 19 T.i 21 T.j.1 57 T.j.1 21 T.j.2 57 T.j.2 63 T.j 57 T.j 63 Valeur finale de A 57 Valeur finale de B 63
3. Reprendre la question 1 si on remplace le // dans Tj par un ;
Le problme est quon risque un interblocage si Tj2 prend le verrou sur B avant T.i.2.1 Cela ne pouvait pas se passer dans le cas precedent car Tj.2 ne demande le verrou quaprs que Tj1 ait fini, donc pris le verrou sur A. Or cela nest posssibe que lorsque Ti a entierement fini, donc Ti21 a deja pris et utilis le verrou sur B
4. Soient les objets A et B de la classe Compte qui reprsente des comptes en banque. Reprsenter une transaction imbrique ferme T 1 qui effectue le transfert dune somme S de B vers A. Dbit et crdit sont faits en parallle. Seuls les nuds feuilles peuvent accder la base. Les nuds sont identifis ainsi : si une transaction est le nime fils de Tx, alors elle est identifie par Tx.n. On dispose de deux variables globales la transaction imbrique : V et V. Chaque feuille excute une seule instruction du langage L. Indiquer pour chaque nud non feuille quel est le mode pour ses descendants (parallle // ou squentiel ;) et pour les nuds feuilles la ligne de code en langage L quelle excute. Toutes les sous-transactions sont obligatoires.
T 1 T 1.1 T 1.2 dbit crdit A complter
T 1 // T 1.1
T 1.1.1
T 1.1. 2 V :=Lire(A Ecrire(A,V+ ; T 1.2 T 1.2.1 T 1.2. 2 V :=Lire( Ecrire(B,V- ; T 1 // T 1.1
T 1.1.1
T 1.1. 2 V :=Lire(A) Ecrire(A,V+S) ; ; T 1.2 T 1.2.1 T 1.2. 2 V :=Lire(B) ; Ecrire(B,V-S) ; ;