75 lines
3.7 KiB
Markdown
Raw Permalink Normal View History

2024-12-05 17:32:54 +01:00
Lien du dépot GIT : [GIT](https://grond.iut-fbleau.fr/stiti/MiniProjet2)
2024-12-03 20:23:28 +01:00
# Miniprojet 2 - Concurrence 🏦
2024-12-02 13:54:59 +01:00
2024-12-03 20:23:28 +01:00
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
2024-12-03 20:24:02 +01:00
- 📖 [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)
2024-12-04 09:47:45 +01:00
- 🔒 [Transactions sécurisées avec thread](#-transactions-sécurisées-avec-thread)
2024-12-03 20:24:02 +01:00
- 🤝 [Auteurs](#-auteurs)
2024-12-03 20:23:28 +01:00
## 📖 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.
2024-12-05 14:29:25 +01:00
3. Une version bonus, utilisant des verrous et des threads.
2024-12-03 20:23:28 +01:00
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 lutilisation 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.
2024-12-04 09:47:45 +01:00
## 🔒 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.
2024-12-03 20:23:28 +01:00
## 🤝 Auteurs
2024-12-04 09:47:45 +01:00
Ce projet a été réalisé avec amour par :
2024-12-05 14:26:35 +01:00
- Moncef STITI - [@stiti](https://grond.iut-fbleau.fr/stiti)
- Lenny FOULOU - [@foulou](https://grond.iut-fbleau.fr/foulou)