2024-12-05 14:25:43 +01:00
2024-12-05 14:25:43 +01:00
2024-12-05 14:25:43 +01:00
2024-12-02 13:54:59 +01:00
2024-12-05 17:32:54 +01:00

Lien du dépot GIT : GIT

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

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.

🛠️ 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.

🔓 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
  • 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.

🔒 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.

🤝 Auteurs

Ce projet a été réalisé avec amour par :

Description
Mini projet n°2 - Gestion concurrentielle
Readme 70 KiB
Languages
C 97.1%
Makefile 2.9%