diff --git a/README.md b/README.md index efab4f2..c2c2e7d 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,64 @@ -# MiniProjet2 +# Miniprojet 2 - Concurrence 🏦 -Mini projet n°2 - ... \ No newline at end of file +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) +- 🤝 [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. + +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. + + +## 🤝 Auteurs + +Ce projet a été réalisé par : +- Moncef STITI (@stiti) +- Lenny FOULOU (@foulou) \ No newline at end of file