Informatique distribuée : pb de parallèlisme dans une transaction
Informatique distribuée : pb de parallèlisme dans une transaction - Algo - Programmation
MarshPosté le 20-11-2003 à 10:16:54
Salut
Voilà j'ai un exercie d'informatique distribué sur lequel je ne suis pas trop sûr de moi. Pouvez-vous m'aider ?
Enoncé
Etude du parallélisme d'accèsdans le cadre d'un système bancaire.
On considère un ensemble d'établissement bancaires b1, b2, b3, ..., et un ensemble de clients c1b1, ..., cpb1, cqbn, et des transactions Ti de la forme :
Ti : chbk crédite cjbl S
dans laquelle on débite le client ch de l'établissement bk de la somme S.
Résoudre les problème d'accès simultanés, à l'aide de section critique verouillées par les outils déjà décrits.
Méthode Virement (Compte_à_débiter, Compte_à_créditer, Montant) Début Début_transaction Créditer(Compte_à_créditer, Montant) si Compte_à_débiter < montant alors Annuler_transaction sinon Débiter(Compte_à_débiter, Montant) Valider_transaction fsi Fin
Méthode Créditer(Compte_à_créditer, Montant) Début verrou_exclusif(Compte_à_créditer) compte_à_créditer:= compte_à_créditer+montant deverrou_exclusif(Compte_à_créditer) Fin
Méthode Débiter(Compte_à_débiter, Montant) Début verrou_exclusif(Compte_à_débiter) compte_à_débiter:= compte_à_débiter-montant deverrou_exclusif(Compte_à_débiter) Fin
Tout en sachant que, si j'ai trois sites A, B et C, on a :
Sur l'agent principal (A) Méthode Virement (Compte_à_débiter, Compte_à_créditer, Montant)
Sur l'agent crédit (B) Méthode Créditer(Compte_à_créditer, Montant)
Sur l'agent débit (C) Méthode Débiter(Compte_à_débiter, Montant)
Conclusion
Cela me paraît un peu trop simple et j'ai l'impression d'avoir omis de traiter certains aspects du problèmes.
Marsh Posté le 20-11-2003 à 10:16:54
Salut
Voilà j'ai un exercie d'informatique distribué sur lequel je ne suis pas trop sûr de moi. Pouvez-vous m'aider ?
Enoncé
Etude du parallélisme d'accèsdans le cadre d'un système bancaire.
On considère un ensemble d'établissement bancaires b1, b2, b3, ..., et un ensemble de clients c1b1, ..., cpb1, cqbn, et des transactions Ti de la forme :
Ti : chbk crédite cjbl S
dans laquelle on débite le client ch de l'établissement bk de la somme S.
Résoudre les problème d'accès simultanés, à l'aide de section critique verouillées par les outils déjà décrits.
Les outils étant :
- verrou_exclusif(ressource)
- deverrou_exclusif(ressource)
- verrou_partagé(ressource)
- deverrou_partagé(ressource)
Ma proposition de solution
Les objets :
Clients
Nom : chaîne
Adresse : chaîne
Comptes : liste de comptes
Compte
Numéro : entier
Solde : réel
Les opérations :
Simples
Créditer(compte_à_créditer, montant)
Débiter(compte_à_débiter, montant)
Complexes
Virement(compte_à_débiter, compte_à_créditer, montant)
Implémentation :
Méthode Virement
(Compte_à_débiter, Compte_à_créditer, Montant)
Début
Début_transaction
Créditer(Compte_à_créditer, Montant)
si Compte_à_débiter < montant alors
Annuler_transaction
sinon
Débiter(Compte_à_débiter, Montant)
Valider_transaction
fsi
Fin
Méthode Créditer(Compte_à_créditer, Montant)
Début
verrou_exclusif(Compte_à_créditer)
compte_à_créditer:= compte_à_créditer+montant
deverrou_exclusif(Compte_à_créditer)
Fin
Méthode Débiter(Compte_à_débiter, Montant)
Début
verrou_exclusif(Compte_à_débiter)
compte_à_débiter:= compte_à_débiter-montant
deverrou_exclusif(Compte_à_débiter)
Fin
Tout en sachant que, si j'ai trois sites A, B et C, on a :
Sur l'agent principal (A)
Méthode Virement
(Compte_à_débiter, Compte_à_créditer, Montant)
Sur l'agent crédit (B)
Méthode Créditer(Compte_à_créditer, Montant)
Sur l'agent débit (C)
Méthode Débiter(Compte_à_débiter, Montant)
Conclusion
Cela me paraît un peu trop simple et j'ai l'impression d'avoir omis de traiter certains aspects du problèmes.
Pouvez-vous m'aider ?
Message édité par Roco le 20-11-2003 à 10:25:39