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