Cours 9 Flashcards
Definir la coherence.
Coherence (consistency): refleter sur la copie d’une donnee les modifications intervenues sur d’autre copies de cette donnee.
En anglais:
• Coherence, en cas de plusieurs modifications concurrentes sur une donnee, la meme valeur finale rejoindra eventuellement toutes les copies.
• Consistency, l’ordre entre plusieurs modifications concurrentes sur differentes donnees sera vu de maniere coherente (plus ou moins stricte selon le modele) par les clients de toutes les copies
Les modeles de coherence sont utilises pour les donnees reparties ou repliquees: bases de donnees, systemes de fichiers, cache…
Definir les modeles de coherence.
• Coherence stricte: la mise a jour est vue en meme temps sur toutes les copies (e.g. invalider la valeur actuelle sur toutes les copies, propager la nouvelle valeur sur toutes les copies).
• Coerence sequentielle: l’ordre des modifications est le meme sur toutes les copies.
• Coherence causale: l’ordre des modifications reliees
causalement (e.g. meme origine) est le meme sur toutes les copies.
Definir le concept de transaction.
- Dans la plupart des cas, on doit s’assurer de la coherence d’un groupe de modifications (transaction) plutot qu’une modification seule (e.g. transactions dans les bases de donnees, operations sur les donnees et metadonnees pour ecrire dans un fichier).
- La coherence sera donc etudiee principalement sous l’angle des transactions.
- Transaction: sequence d’operations que le serveur execute d’une maniere atomique, meme en presence d’acces simultanes par plusieurs clients et de pannes.
- Assurer le partage securitaire et coherent des donnees des serveurs par plusieurs clients.
Definir la synchronisation simple (sans transaction).
- Operations atomiques au niveau du serveur.
- Utilisation de plusieurs fils d’execution au niveau du serveur.
- Les operations des clients peuvent s’executer simultanement.
- Un verrou assure qu’un seul thread accede a un objet a un instant donne.
Definir les proprietes des transactions.
- Atomicite: Les effets d’une transaction ne sont rendus visibles que si toutes ses operations peuvent etre realisees. Sinon, aucun effet n’est produit par la transaction
- Coherence: les effets d’une transaction doivent satisfaire les contraintes de coherences de l’application (la transaction transforme l’etat coherent du systeme en un autre etat coherent)
- Isolation: les effets d’une transaction sont identiques `a ceux qu’elle pourrait produire si elle s’executait seule dans le systeme
- Durabilite: les effets d’une transaction terminee ne peuvent etre detruits ulterieurement par une quelconque defaillance
Qu’est-ce que le concept de “Panne inevitable mais objets recuperables”?
- Objets pouvant etre recuperes suite a une panne de serveur. Le serveur doit stocker suffisamment d’information en memoire stable (disque), possiblement redondante.
- Un journal sur disque permet de lister les elements d’une transaction avant de commettre ou d’annuler, et permet en cas de panne de savoir ce qui etait en train d’etre fait.
- La synchronisation des transactions pour les serialiser est une methode permettant l’isolation.
Definir un coordonateur de transaction et comment il fonctionne.
- Creation: le coordonnateur cree la transaction et lui affecte un identificateur unique qui sera associe a toutes les operations de cette transaction.
- Operations: le coordonnateur maintient la liste des objets ou processeurs impliques dans les differentes operations de la transaction.
- Fin: la transaction est confirmee (commit) ou annulee (abort) par le client, le coordonnateur accepte ou annule une transaction confirmee et annule une transaction annulee.
- Une transaction est completee suite a la cooperation entre le programme du client, les objets recuperables et le coordonnateur.
Que se passe-t-il en cas de panne du client.
- Le client redemarre et a oublie toute transaction qu’il avait initiee et qui etait en cours.
- Si le serveur n’a plus de nouvelles d’un client apres un cetain delai (timeout) il annule la transaction.
- Si le client n’etait pas en panne mais son reseau etait trop lent et le delai expire, le serveur lui refusera la transaction puisqu’elle est annulee (ou repondra que la transaction n’existe plus).
Que se passe-t-il en cas de panne du serveur.
• Le serveur redemarre et a oublie toutes les transactions en cours (non completees) qui sont consequemment annulees.
• Une procedure de recouvrement (e.g. lecture du journal des transactions) permet au serveur de revenir a un etat coherent des objets (valeurs produites par les plus recentes transactions completees).
• Un client ne recevant plus de reponse du serveur apres un certain delai abandonne sa requete.
• Si le serveur a redemarre, le client se fera repondre que la transaction n’existe plus.
• Si le serveur plante avant d’avoir repondu au client si la
transaction est acceptee, le client reste dans l’incertitude. Il demandera le statut de la transaction apres le redemarrage et se fera confirmer qu’elle est acceptee ou repondre que la transaction n’existe plus.
Definir ce qu’est la serialisation des transactions.
- Une transaction executee seule ne presente pas de probleme.
- L’execution serialisee des transactions, une par une, permet aussi d’assurer les proprietes requises, T1, T2, . . . , Tn .
- Entrelacement des transactions equivalent a une execution en serie, pour un ordre des transactions quelconque, est aussi acceptable.
Quelles sont les contraintes pour serialiser les transactions?
- Deux operations sont en conflit si leur effet combine depend de l’ordre dans lequel elles sont executees.
- Lecture-Lecture, pas de conflit.
- Lecture-Ecriture, conflit, le resultat de la lecture est affecte par l’ecriture de la variable a lire.
- Ecriture-Ecriture, conflit, le resultat des lectures subsequentes depend de l’ordre des deux ecritures sur une meme variable.
Definir des transactions serialisables.
Deux transactions sont serialisables si toutes les paires
d’operations en conflit des deux transactions sont executees dans le meme ordre sur tous les objets qu’elles accedent.
Definir les approches de controle de la concurrence.
- Le protocole doit produire un ordonnancement equivalent a une execution en serie.
- Le verrouillage:
• Utilise par la plupart des systemes.
• Chaque objet est verrouille par la premiere operation qui y accede.
• L’objet est deverrouille au commit ou abort. - Controle optimiste de la concurrence:
• On suppose l’absence de conflit.
• Chaque transaction est executee jusqu’a la fin sans bloquer.
• Avant d’etre completee, le serveur verifie si elle n’a pas execute des operations sur des objets qui sont en conflit avec les autres operations des autres transactions simultanees.
• Si de tels conflits existent, le serveur abandonne la transaction et le client peut la redemarrer.
Definir le recouvrement apres l’abandon d’une transaction.
Le serveur doit:
• Sauvegarder les effets des transactions completees
• Assurer qu’aucun effet des transactions abandonnees ne soit stocke
Problemes associes a l’abandon de transactions, si mal gere:
• Probleme de lectures contaminees (dirty reads)
• Probleme d’ecritures prematurees (premature writes)
Comment se premunir contre les problemes d’ecriture prematurees?
• Chaque transaction possede ses propres versions
provisoires (tentative) des objets qu’elle met a jour.
• Les ecritures sont faites sur les versions provisoires.
• Les lectures d’autres transactions sont faites a partir des versions provisoires (correct si finit apres), ou a partir des versions permanentes (correct si finit avant ou est annule).
• Les versions provisoires sont transferees dans les versions permanentes des objets seulement lorsque la transaction est completee, en une seule etape.
• Pendant le transfert, les autres transactions n’ont pas acces aux objets modifies.
• Si les objets modifies ne sont pas verrouilles (controle
optimiste), il faut verifier la coherence des transactions
concurrentes.