Skip to content
Extraits de code Groupes Projets
README.md 2,32 ko
Newer Older
  • Learn to ignore specific revisions
  • Laurent Paucot's avatar
    Laurent Paucot a validé
    # lepl1503-2020-groupe-M2
    
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    Pour compiler le programme : make fact
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    Pour exécuter le fichier exécutable "fact" : ./fact [-N nombre_de_threads] input output
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    Pour compiler et tester (suite de tests unitaires) le programme : make test 
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    Pour compiler et effectuer une analyse avec "Valgrind" : make val
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    Pour compiler, et obtenir le rapport d'analyse .xml de "Valgrind" : make val_xml
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    Pour effectuer une analyse avec "cppcheck" : make cpp
    
    Pour compiler et obtenir le rapport d'analyse .xml  de "cppcheck" : make cpp_xml
    
    Pour nettoyer les fichiers auxiliaires générés et l'exécutable : make clean
    
    
    Architecture du programme:
    
    Le travail est décomposé en 3 sections coordonnées via un double problème du producteur-consommateur :
    
        -> 1 thread s'occupe de:
                                    § lire le fichier input 
                                    
                                    § stocker chacune des lignes sous forme de chaine de charactère dans un 1er tableau
    
        -> N threads s'occupent de :
                                    § récupérer les chaines de caractères dans le premier tableau
    
                                    § les convertir en 'unsigned long long' et calculer leur liste de    diviseurs premiers
    
                                    § Stocker ces listes dans un 2e tableau
        
        -> 1 thread s'occupe de :
                                    § récupérer les listes de diviseurs dans le 2e tableau
    
                                    § Retranscrire dans le bon format le nombre à factoriser et ses      diviseurs premiers dans le fichier output
    
    Note : 
            § Les accès aux tableaux sont coordonnés par des mutex (1 par tableau) et des sémaphores
    
            § Les diviseurs premiers d'un même nombre sont stockés dans une circular linked list
    
    
    Architecture des tests :
    
    6 tests sont réalisés afin de tester:
    
                                    § La fonction is_div
                                    § La fonction is_prime (2 tests)
                                    § Le fonctionnement complet pour un fichier vide (N = 4)
                                    § Le fonctionnement complet pour un fichier d'une ligne : check du   format et des diviseurs (N = 4)
                                    § Le fonctionnement complet pour un fichier de 100 lignes : check    du nombre de lignes (réalisé avec N = 4 puis N = 1)
    
    # lepl1503-2020-groupe-M2