Modification des readme.md

This commit is contained in:
Moncef STITI 2024-12-03 21:11:22 +01:00
parent c5600c90a6
commit 70d9dccdc2
2 changed files with 120 additions and 1 deletions
Secured
Unsecured

@ -1 +1,108 @@
## SOON
# 🔒 Transactions Sécurisées
Ce programme simule des transactions bancaires concurrentes avec un contrôle de verrouillage pour éviter les incohérences de données. L'utilisation de verrous permet de garantir que plusieurs processus n'accèdent pas simultanément aux mêmes comptes, empêchant ainsi les écritures corrompues et les conflits d'accès.
---
## 📋 Description du Programme
Le programme exécute plusieurs processus en parallèle, chacun effectuant un certain nombre de transactions aléatoires entre des comptes bancaires stockés dans un fichier de base de données. Cette version utilise des mécanismes de verrouillage pour éviter les problèmes d'accès concurrent.
### Fonctionnalités principales :
1. **Lecture/Écriture sécurisée de comptes** :
Les comptes sont lus et écrits dans un fichier (`accounts.db`). Chaque accès au fichier est protégé par un verrou exclusif, garantissant qu'un seul processus peut modifier un compte à la fois.
2. **Transactions sécurisées** :
Chaque processus effectue des transactions aléatoires entre deux comptes, avec un montant transféré d'un maximum de 20 % du solde du compte source.
3. **Contrôle des verrous** :
Utilisation de la fonction `lockf` pour verrouiller les sections du fichier correspondantes aux comptes pendant que les données sont lues ou écrites, garantissant une gestion correcte des accès concurrents.
4. **Calcul du solde total** :
Le solde total des comptes est calculé avant et après les transactions pour vérifier qu'il n'y a pas d'incohérences dues aux transactions.
---
## ⚙️ Compilation et Exécution
### Compilation
Utilisez le fichier `Makefile` pour compiler le programme :
```bash
make
```
Cela génère un exécutable nommé `secured_transaction`.
### Exécution
Exécutez le programme en spécifiant :
- Le nombre de processus à lancer.
- Le nombre de transactions par processus.
Exemple :
```bash
./secured_transaction 4 10
```
Ici, 4 processus seront lancés, chacun effectuant 10 transactions.
---
## 🛠️ Modifications par rapport à la version non sécurisée
### 1. **Verrouillage des comptes** :
Contrairement à la version non sécurisée, chaque opération de lecture et d'écriture sur un compte est protégée par un verrou exclusif. Ce verrou empêche d'autres processus de modifier le même compte pendant qu'une transaction est en cours, évitant ainsi les conflits d'accès.
### 2. **Gestion des Transactions** :
Les transactions sont réalisées avec un mécanisme de verrouillage, assurant qu'aucune écriture n'interfère avec une lecture ou une autre écriture simultanée. Ce processus garantit l'intégrité des soldes des comptes et évite les incohérences.
### 3. **Sécurité des données** :
Le programme utilise des appels `lockf` pour verrouiller la section du fichier contenant le compte avant toute lecture ou écriture, et pour libérer ce verrou une fois l'opération terminée. Cela permet de garantir que les données ne sont pas corrompues par des écritures concurrentes.
---
## 🛑 Problèmes et Limites
### 1. **Performance** :
Bien que le verrouillage évite les conflits d'écriture, il peut entraîner des ralentissements dans des environnements où de nombreux processus sont en concurrence pour accéder au fichier. En effet, l'attente du verrou par plusieurs processus peut entraîner des délais supplémentaires.
### 2. **Verrouillage global** :
Le programme utilise un verrouillage de type `lockf` pour verrouiller une section spécifique du fichier. Cependant, ce mécanisme peut ne pas être aussi efficace que des solutions plus complexes comme les bases de données transactionnelles.
---
## 📜 Exemple de Résultat
### Avant l'exécution
Le fichier [`accounts.db`](../Data/accounts.db) contient :
```plaintext
...
Diana 7145
Diego 8494
Dominic 4487
Dylan 1157
Easton 429
Eden 5737
Edward 3671
Elaina 4904
...
```
### Après l'exécution
Une possible sortie console pourrait être :
```plaintext
Solde total initial : 400000€
Transaction : Zuri -> Lane : 28€
Transaction : Alivia -> Kaiden : 8€
Transaction : Arianna -> Barrett : 5€
Transaction : Rosalie -> Connor : 1€
Transaction : Sara -> Arthur : 151€
Transaction : Jude -> Sadie : 45€
Solde total final : 4000000€
Tout les processus sont terminés !
```
---
Pour voir la version non sécurisée, consultez la section [🔓 Transactions Non Sécurisées](../Unsecured).

@ -2,6 +2,8 @@
Ce programme simule des transactions bancaires concurrentes sans mécanismes de protection. Les processus effectuent des transferts entre comptes bancaires stockés dans un fichier de base de données. Cependant, en l'absence de verrouillage, des incohérences peuvent survenir lorsque plusieurs processus accèdent simultanément au fichier.
---
## 📋 Description du Programme
Le programme exécute plusieurs processus en parallèle, chacun effectuant un certain nombre de transactions aléatoires entre des comptes bancaires.
@ -18,6 +20,8 @@ Aucune protection n'est mise en place pour gérer les accès concurrents au fich
4. **Calcul du solde total :**
Le solde total des comptes est calculé avant et après les transactions pour détecter d'éventuelles incohérences.
---
## ⚙️ Compilation et Exécution
### Compilation
Utilisez le fichier `Makefile` pour compiler le programme :
@ -37,6 +41,8 @@ Exemple :
```
Ici, 4 processus seront lancés, chacun effectuant 10 transactions.
---
## 🛑 Problèmes et Limites
En raison de l'absence de verrouillage, plusieurs problèmes peuvent survenir, en particulier dans des situations d'accès concurrent à la base de données :
### **1. Incohérences des Données :**
@ -62,6 +68,8 @@ Le solde final est différent du solde initial...
### **3. Absence de Contrôle des Transactions :**
Sans un mécanisme de verrouillage, il est impossible de garantir qu'une transaction soit complète avant qu'une autre ne soit lancée. Par exemple, un transfert de 100€ entre `Alice` et `Bob` peut être partiellement effectué si le programme est interrompu au moment de l'écriture.
---
## 📜 Exemple de Résultat
### Avant l'exécution
Le fichier [`accounts.db`](../Data/accounts.db) contient :
@ -78,6 +86,7 @@ Elaina 4904
...
```
### Compilation et exécution
On compile le programme avec :
```bash
@ -95,6 +104,7 @@ On exécute avec la commande suivante :
./unsecured_transaction 30 40
```
### Après l'exécution
On obtient cette sortie sur la console :
@ -112,6 +122,8 @@ Le solde final est différent du solde initial...
Tout les processus sont terminés !
```
---
## 🚀 Points à Améliorer
- **Ajout de verrouillage :** Utiliser des mécanismes comme lockf pour sécuriser les accès concurrents au fichier.
- **Détection de conflits :** Identifier et gérer les conflits d'écriture pour éviter les pertes de données.