75 lines
3.7 KiB
Markdown
75 lines
3.7 KiB
Markdown
Lien du dépot GIT : [GIT](https://grond.iut-fbleau.fr/stiti/MiniProjet2)
|
||
|
||
# Miniprojet 2 - Concurrence 🏦
|
||
|
||
Ce projet explore les défis de la gestion concurrentielle dans une "base de données bancaire". À travers deux implémentations (sécurisée et non sécurisée), nous analysons les problèmes d'accès concurrent et proposons une solution à l'aide de verrous.
|
||
|
||
## 📚 Table des matières
|
||
|
||
|
||
- 📖 [Description générale](#-description-générale)
|
||
- 🎯 [Objectifs du projet](#-objectifs-du-projet)
|
||
- 📁 [Données](#-données)
|
||
- 🛠️ [Générateur de données](#-générateur-de-données)
|
||
- 🔓 [Transactions non sécurisées](#-transactions-non-sécurisées)
|
||
- 🔒 [Transactions sécurisées](#-transactions-sécurisées)
|
||
- 🔒 [Transactions sécurisées avec thread](#-transactions-sécurisées-avec-thread)
|
||
- 🤝 [Auteurs](#-auteurs)
|
||
|
||
## 📖 Description Générale
|
||
Le projet met en œuvre des transactions simulées entre comptes bancaires en conditions concurrentielles.
|
||
Deux versions ont été développées :
|
||
1. Une version non sécurisée, exposant les incohérences possibles sans précautions.
|
||
2. Une version sécurisée, utilisant des verrous pour garantir la cohérence.
|
||
3. Une version bonus, utilisant des verrous et des threads.
|
||
|
||
Chaque version est documentée et accompagnée de son code source dans des sous-répertoires dédiés.
|
||
|
||
|
||
## 🎯 Objectifs du Projet
|
||
- Mettre en évidence les effets néfastes d'une mauvaise gestion des accès concurrents.
|
||
- Implémenter une solution robuste en utilisant des verrous pour assurer la cohérence tout en conservant un bon niveau de parallélisme.
|
||
|
||
## 📁 Données
|
||
|
||
Le répertoire **Data** contient la base de données `accounts.db`, qui sert de point de départ pour les transactions. Chaque ligne correspond à un compte bancaire avec un nom et un solde initial.
|
||
- **[Accéder au répertoire Data](./Data)**
|
||
- **Fichiers**:
|
||
- `accounts.db`: Fichier texte simulant une base de données avec des comptes.
|
||
|
||
## 🛠️ Générateur de Données
|
||
Le répertoire **DataGenerator** contient un programme pour générer une base de données bancaire. Cela permet de créer des fichiers `.db` personnalisés pour vos tests.
|
||
- **[Accéder au répertoire DataGenerator](./DataGenerator)**
|
||
- **Fichiers**:
|
||
- `README.md`: Documentation sur l'utilisation du générateur.
|
||
- `generate_accounts.c`: Code source pour générer `accounts.db`.
|
||
|
||
## 🔓 Transactions Non Sécurisées
|
||
Le répertoire **Unsecured** contient une implémentation basique de gestion de transactions bancaires.
|
||
**Problème :** Sans mécanismes de protection, les accès concurrents entraînent des incohérences dans les soldes.
|
||
- **[Accéder au répertoire Unsecured](./Unsecured)**
|
||
- **Fichiers**:
|
||
- `README.md`: Documentation sur l’utilisation du programme ainsi que des tests et observations.
|
||
- `unsecured_transaction.c`: Code source.
|
||
|
||
|
||
## 🔒 Transactions Sécurisées
|
||
Le répertoire **Secured** contient une version améliorée avec des verrous (fonction lockf) pour résoudre les problèmes d'accès concurrent.
|
||
- **[Accéder au répertoire Secured](./Secured)**
|
||
- **Fichiers**:
|
||
- `README.md`: Documentation sur l'implémentation sécurisée.
|
||
- `secured_transaction.c`: Code source.
|
||
|
||
## 🔒 Transactions Sécurisées avec Thread
|
||
Le répertoire **SecuredThread** contient une version améliorée de la version avec des verrous mais cette fois avec des threads.
|
||
- **[Accéder au répertoire SecuredThread](./SecuredThread)**
|
||
- **Fichiers**:
|
||
- `README.md`: Documentation sur l'implémentation sécurisée avec threads.
|
||
- `secured_transaction_threads.c`: Code source.
|
||
|
||
|
||
## 🤝 Auteurs
|
||
|
||
Ce projet a été réalisé avec amour par :
|
||
- Moncef STITI - [@stiti](https://grond.iut-fbleau.fr/stiti)
|
||
- Lenny FOULOU - [@foulou](https://grond.iut-fbleau.fr/foulou) |