From 8a2dc3b8d7e414db094dfa29838c7ba73fc01f27 Mon Sep 17 00:00:00 2001 From: Arnaud Lefebvre <arnaud.lefebvre@student.uclouvain.be> Date: Fri, 15 May 2020 11:21:27 +0200 Subject: [PATCH] Upload New File --- Final Code/README.md | 65 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 Final Code/README.md diff --git a/Final Code/README.md b/Final Code/README.md new file mode 100644 index 0000000..4c06cef --- /dev/null +++ b/Final Code/README.md @@ -0,0 +1,65 @@ +# Projet_Q4_Groupe_O4 + +## Description des fichiers : + +@fonctions.h +Un fichier header qui reprend les structures utilisées pour les listes chaînées ainsi que les nom +des fonctions utilisées dans fonctions.c + +@fonctions.c +Un fichier avec l'implémentation des différentes fonctions décrites dans le fichier header. +Dans celui-ci, il y a les fonctions liées aux listes chaînées, une fonction pour trouver les +diviseurspremiers d'un nombre donné, une fonction comptant les listes d'un fichier et des fonctions +pour initialiser les 2 buffers. + +@main.c +Le code source à compiler pour obtenir le programme + +@test.c +Un fichier reprenant les tests unitaires de nos fonctions + +@Makefile +Le fichier reprenant les commandes à executer pour lancer le code de façon plus agréable + +## Lancer le code : + +- make fact : produit l'exécutable "fact" + +- make cpp / make cpp_xml : compile le programme et analyse ou donne le rapport d'analyse avec cppcheck + +- make val / make val_xml : compile le programme et analyse ou donne le rapport d'analyse avec valgrind + +- make test : compile le programme et exécute les test unitaires + +- make clean : nettoie le dossier et supprime les exécutables créés + +- ./fact -N nthreads input.txt output.txt : lance le programme exécutable fact + * nthreads : le nombre de threads du programme, un entier >= 1 + * input.txt : le nom du fichier input ayant des lignes d'entiers compris entre 2 et 2^(31)-1 + * output.txt : le nom du fichier output qui est créé si il n'existe pas encore + +## Architecture du code : + +Notre code est découpé en 3 parties : + +1) Lecture (1 thread ) : lit les lignes du fichier input et en stock les entiers dans le buffer_1 + +2) Calcul (n threads) : prend les entiers du buffer_1, calcul la liste des diviseurs premiers de l'entier + et stock cette liste d'entiers dans le buffer_2 +3) Ecriture (1 thread ) : prend les listes d'entiers du buffer_2 et les écrit dans le fichier output + + Les 2 buffers sont protégés par 1 mutex et 2 sémaphores (free et full) chacun + +## Bon fonctionnement : + +Pour un bon fonctionnement du code, il faut respecter quelque règles : + +1) Le fichier input doit être composé de lignes ne comportant que des entiers compris entre 2 et 2^(31)-1 + avec un seul entier par ligne + +2) Le nombre de thread(s) doit être précisé et doit être >= 1 + +3) Pour un bon fonctionnement de valgrind, il faut que le fichier "example_input.txt" soit dans le même dossier + que le Makefile + +# Projet_Q4_Groupe_O4 \ No newline at end of file -- GitLab