Systèmes · C

Projet en action

MiniProjet2-Concurrence

Une visualisation courte du problème traité dans le projet : des transactions concurrentes, puis la même situation protégée par un verrou.

CThreadsSynchronisation
MODE DE DÉMOINTERACTIFReconstitution fidèle de l’exécution

Le projet, derrière l’écran

Le projet
sans détour.

Le sujet, le fonctionnement, le point difficile et les choix de code : tout ce qu’il faut pour comprendre le projet rapidement.

LE SUJETMiniprojet de systèmes · projet en groupe

Une fausse base bancaire stocke des comptes dans accounts.db. Plusieurs processus ou threads exécutent des transferts en parallèle, avec une version volontairement non sécurisée puis des versions protégées.

LE BESOINPourquoi je l’ai fait

Le projet met en évidence une course critique qui peut corrompre les soldes, puis mesure ce que change une synchronisation correctement placée.

EN DÉMOCe que vous pouvez tester

Le parcours principal est jouable ici. Le dépôt GitHub garde la version complète du projet et ses fichiers.

LE FONCTIONNEMENTComment l’idée devient un programme

La version non sécurisée lance des transactions concurrentes sans protection. La version processus utilise lockf pour protéger les accès au fichier, tandis que la version bonus partage les ressources avec des threads et des verrous adaptés.

LE POINT DÉLICATCe qui demande de la rigueur

Rendre visible la différence entre des accès concurrents non protégés et une synchronisation placée sur la ressource partagée.

DANS LE CODEComment les responsabilités sont rangées

Les variantes Unsecured, Secured et SecuredThread sont séparées, avec leurs Makefiles et README. DataGenerator produit des bases de comptes reproductibles pour varier les tests.

LE CHEMIN DU PROJETComptes Soldes
ENTRÉEComptes
01Lancerprocessus concurrents
02Protégerfichier ou mutex
03Comparerétat sûr / non sûr
RÉSULTATSoldes

Démonstration

Voir le projet
prendre vie.

Explorez les fonctionnalités, les interactions et le parcours principal du projet.

MiniProjet2-Concurrence / C · processus · threads

Le programme bancaire dans son terminal

DÉMO LOCALE
unsecured_transactionC / accounts.db

moncef@portfolio:~/MiniProjet2-Concurrence/Unsecured$ make

gcc unsecured_transaction.c -o unsecured_transaction

moncef@portfolio:~/MiniProjet2-Concurrence/Unsecured$ ./unsecured_transaction 15 30

Solde total initial : 400000€
Transaction : Sara -> Arthur : 151€
Transaction : Jude -> Sadie : 45€
Solde total final : 399990€
Le solde final est différent du solde initial...
VARIANTE EXÉCUTÉEUnsecured

Processus concurrents sans protection : une course critique peut perdre une écriture.

COMPTE 01920
COMPTE 021 010
COMPTE 031 040
simulation prête · aucun processus réel lancé
Reconstitution fidèle de l’exécutionVoir le dépôt GitHub
i
Pour aller plus loin

La démo montre le résultat. Le dépôt GitHub contient le code complet et les fichiers du projet.