Vous êtes sur la page 1sur 4

Exercice 1 (3 points) : transactions imbriques

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