12.07.2015 Views

Généralités sur les systèmes d'exploitation - Site personnel de ...

Généralités sur les systèmes d'exploitation - Site personnel de ...

Généralités sur les systèmes d'exploitation - Site personnel de ...

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

T1 T2 T1 T2x=read(A)x=x­50write(A,x)t=read(B)t=t+50write(B,t)y=read(A)y=y­100write(A,y)z=read(B)z=z+100write(B,z)x=read(A)x=x­50write(A,x)z=read(B)z=z+50write(B,z)LO14 : Université Technologique <strong>de</strong> Troyesy=read(A)y=y­100write(A,y)t=read(B)t=t+100write(B,t)Avec A=1000 et B=2000, la première exécution fournit A=950 et B=2100, la contrainte initiale n'est paspréservée. La secon<strong>de</strong> exécution fournit A=850 et B=2150 ce qui respecte la contrainte.Si l'on revient aux graphes <strong>de</strong> dépendances du chapitre 2, <strong>les</strong> sommets du graphe sont constitués <strong>de</strong> toutes<strong>les</strong> transactions participant à l'exécution.Un arc relie une transaction T i à une transaction T j si et seulement siETi∩ LTj≠ ∅•et Ti exécute un write(X) avant que T j ne fasse un read(X).LTi∩ ETj≠ ∅•et Ti exécute un read(X) avant que T j ne fasse un write(X).Sémantiquement, le fait qu'un arc existe entre T i et T j dans le graphe <strong>de</strong> précé<strong>de</strong>nce signifie que dans touteexécution équivalente à celle traitée, T i doit précé<strong>de</strong>r T j. On constate que dans lecas d'une exécution séquentielle T i puis T j, il n'y a qu'un seul arc entre T i et T j.T1 T2 T1 T2Fig. 9.2 ­ graphe <strong>de</strong>s transactions précé<strong>de</strong>ntesOn démontre que si le graphe <strong>de</strong> dépendance possè<strong>de</strong> un cycle alors l'exécution n'est pas sérialisable.Dans le cas contraire elle l'est. L'ordre <strong>de</strong> sérialisation peut être obtenu par tri topologique du graphe. Onnotera que ce tri n'est en général pas unique.Si nous reprenons <strong>les</strong> <strong>de</strong>ux exécutions précé<strong>de</strong>ntes, on constate après le calcul du graphe <strong>de</strong> dépendance<strong>de</strong> chaque exécution (Fig. 10.2) que la première exécution possè<strong>de</strong> un cycle tandis que la secon<strong>de</strong> n'enpossè<strong>de</strong> pas. Le test <strong>de</strong> sérialisabilité d'un ensemble <strong>de</strong> transactions est coûteux puisqu'il est basé <strong>sur</strong> larecherche <strong>de</strong> cyc<strong>les</strong> dans un graphe (O(n 2 )dans un graphe possédant n noeuds). De plus ce calcul ne peutêtre fait qu'à posteriori quand on connaît l'ordre d'exécution <strong>de</strong>s transactions. Les concepteurs <strong>de</strong> SGBD sesont donc tournés vers d'autres solutions.4.3 Le système <strong>de</strong> verrouillageAfin d'as<strong>sur</strong>er que seu<strong>les</strong> <strong>de</strong>s exécutions sérialisab<strong>les</strong> seront exécutées, plusieurs mécanismes peuventêtre mis en place. L'outil le plus répandu pour mener à bien cette tâche est basé <strong>sur</strong> l'utilisation <strong>de</strong> verrous.On impose que l'accès aux données se fasse <strong>de</strong> manière mutuellement exclusive. Un verrou est posé <strong>sur</strong>chaque donnée accédée par une transaction afin d'empêcher <strong>les</strong> autres transactions d'y accé<strong>de</strong>r. Cettetechnique est utilisée dans tous <strong>les</strong> <strong>systèmes</strong> commerciaux actuels.La taille <strong>de</strong> la donnée verrouillée est appelée granularité. C'est au gestionnaire <strong>de</strong> verrous qu'incombe latâche <strong>de</strong> gérer l'accès aux données. Sous DB2 avec le système MVS il se nomme IRLM (IMS ResourceLock Manager). Pour gérer <strong>les</strong> verrous le système utilise une table <strong>de</strong>s verrous posés. A chaque verroucorrespond une ligne définissant la donnée verrouillée, le type <strong>de</strong> verrou posé et le nom <strong>de</strong> la transactionqui l'a posé. Quand un verrou est levé, la ligne correspondante dans la table <strong>de</strong>s verrous est supprimée.Une granularité forte implique un faible parallélisme, tandis qu'une granularité faible implique la gestiond'une table <strong>de</strong>s verrous importante. On peut imaginer bloquer la table entière durant la transaction ou nebloquer que la page physique (unité <strong>de</strong> 4096 octets ou 32768 octets) contenant <strong>les</strong> données. Les meilleurs<strong>systèmes</strong> actuels parviennent à travailler <strong>de</strong> manière idéale en ne bloquant que <strong>les</strong> lignes <strong>de</strong>s donnéesaccédées par la transaction.Dans la majorité <strong>de</strong>s <strong>systèmes</strong> il existe trois types <strong>de</strong> verrous :• Les verrous posés en cas <strong>de</strong> lecture. Si une transaction lit une donnée, aucune autre transaction ne doitpouvoir la modifier tant que cette transaction n'est pas terminée. C'est le mo<strong>de</strong> partagé (Shared).68 /98 S. Moutou : Cours

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!