PCO1 - Laboratoire 2 : Exclusion mutuelle par attente active.

Dimension: px
Commencer à balayer dès la page:

Download "PCO1 - Laboratoire 2 : Exclusion mutuelle par attente active."

Transcription

1 PCO1 - Laboratoire 2 : Exclusion mutuelle par attente active. 1.0 Généré par Doxygen Thu Mar :32 :

2

3 Table des matières 1 PCO1 - Laboratoire 2 : Exclusion mutuelle par attente active. 1 2 Index des fichiers Liste des fichiers Documentation des fichiers Référence du fichier cours.c Description détaillée Description Compilation Remarques Documentation des macros ASM_BARRIERE Documentation des fonctions cours Référence du fichier cours.h Description détaillée Description Documentation des fonctions cours Référence du fichier dekker.c Description détaillée Description Compilation Remarques Documentation des macros ASM_BARRIERE Documentation des fonctions dekker

4 ii TABLE DES MATIÈRES dekker_debut_section_critique dekker_fin_section_critique Documentation des variables NOMBRE_ITERATIONS Référence du fichier dekker.h Description détaillée Description Documentation des fonctions dekker Référence du fichier labo2.c Description détaillée Description Compilation Remarques Documentation des fonctions main Référence du fichier peterson.c Description détaillée Description Compilation Remarques Documentation des macros ASM_BARRIERE Documentation des fonctions peterson peterson_debutsectioncritique peterson_finsectioncritique Référence du fichier peterson.h Description détaillée Description Documentation des fonctions peterson Référence du fichier psleep.h Référence du fichier rapport.txt Description détaillée Introduction

5 TABLE DES MATIÈRES iii Problème posé Choix d implémentation Implémentations & Comparaisons Machines/O.S. utilisés Machine Machine Résultats des mesures Machine Machine Conclusion

6

7 Chapitre 1 PCO1 - Laboratoire 2 : Exclusion mutuelle par attente active.

8 2 PCO1 - Laboratoire 2 : Exclusion mutuelle par attente active.

9 Chapitre 2 Index des fichiers 2.1 Liste des fichiers Liste de tous les fichiers avec une brève description : cours.c cours.h dekker.c dekker.h labo2.c peterson.c peterson.h psleep.h

10 4 Index des fichiers

11 Chapitre 3 Documentation des fichiers 3.1 Référence du fichier cours.c #include "cours.h" Macros #define ASM_BARRIERE Fonctions int cours (void) Description détaillée Auteur: Pierre-Dominique Putallaz & Lazhar Farjallah Date: Version: Description Ce fichier contient le corps des en-têtes des fonctions présentes dans le fichier cours.c, plus toutes les fonctionnalités privées utiles que pour l éxécution de cet algorithme en particulier Compilation Voici la commande complète de compilation : gcc -O3 -Wall -D_REENTRANT -std=c99 -c -fmessage-length=0 -lpthread -MMD -MP -MF"cours.d" -MT"cours.d" -o"cours.o" "cours.c"

12 6 Documentation des fichiers Remarques Pour résoudre le problème d accès concurrent à la mémoire des processeurs multicoeurs, nous incluons la fonction Barriere(). Source : http ://asm.inightmare.org/opcodelst/index.php?op=sfence Attention, ce programme n affiche qu un nombre en virgule flottante comme résultat. Il s agit en fait du nombre de secondes qui se sont écoulées pendant l exécution de l algorithme. Cela est dû au fait que nous avons exécuté des scripts shell qui automatisent les exécutions de cet algorithme et qui récupèrent leurs résultats pour les mettre dans un fichier texte. Il nous faut donc uniquement un nombre, pour pouvoir ensuite le traiter dans les graphiques. Définition dans le fichier cours.c Documentation des macros #define ASM_BARRIERE Définition à la ligne 32 du fichier cours.c Documentation des fonctions int cours (void) Cette fonction permet de lancer l algorithme 2,2 du cours ainsi que d en connaître le temps d exéction final en secondes, sachant qu il est composé de 2 threads et que chacun d entre-eux effectue itérations. Attention, les 2 tâches doivent avoir exactement le même nombre d itérations, car cet algorithme (non optimal) possède un couplage fort entre les tâches, et elle s exécutent forcément l une après l autre. Donc quand une tâche termine une itération, elle passe le jeton et attend qu on lui le repasse, mais si cette autre tâche est déjà terminée, cette dernière ne pourra plus jamais repasser ce jeton. La première tâche est donc en attente infinie. Renvoie: Un entier permettant de connaître l état de terminaison (erreur ou non). Définition à la ligne 241 du fichier cours.c. Référencé par main().

13 3.2 Référence du fichier cours.h Référence du fichier cours.h #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <stdbool.h> #include <math.h> Fonctions int cours (void) Description détaillée Auteur: Pierre-Dominique Putallaz & Lazhar Farjallah Date: Version: Description Ce fichier décrit les en-têtes des fonctions du fichier cours.c. Il contient l algorithme 2.2 du cours qui permet de gérer une section critique entre threads de façon sûre et sans accès concurrents à des variables partagées. Notons toutefois que cet algorithme induit un couplage très fort entre les tâches qui s éxécutent en pseudo-parallélisme, ce qui fait qu il y a une alternance systématique entre les 2 tâches. Ce n est donc pas un algorithme optimal, mais il a le mérite de fonctionner. Définition dans le fichier cours.h Documentation des fonctions int cours (void) Cette fonction permet de lancer l algorithme 2,2 du cours ainsi que d en connaître le temps d exéction final en secondes, sachant qu il est composé de 2 threads et que chacun d entre-eux effectue itérations. Attention, les 2 tâches doivent avoir exactement le même nombre d itérations, car cet algorithme (non optimal) possède un couplage fort entre les tâches, et elle s exécutent forcément l une après l autre. Donc quand une tâche termine une itération, elle passe le jeton et attend qu on lui le repasse, mais si cette autre tâche est déjà terminée, cette dernière ne pourra plus jamais repasser ce jeton. La première tâche est donc en attente infinie. Renvoie: Un entier permettant de connaître l état de terminaison (erreur ou non).

14 8 Documentation des fichiers Définition à la ligne 241 du fichier cours.c. Référencé par main().

15 3.3 Référence du fichier dekker.c Référence du fichier dekker.c #include "dekker.h" Macros #define ASM_BARRIERE Fonctions void dekker_debut_section_critique (int tache) void dekker_fin_section_critique (int tache) int dekker (void) Variables volatile const int NOMBRE_ITERATIONS = Description détaillée Auteur: Pierre-Dominique Putallaz & Lazhar Farjallah Date: Version: Description Ce fichier contient le corps des en-têtes des fonctions présentes dans le fichier dekker.c, plus toutes les fonctionnalités privées utiles que pour l éxécution de cet algorithme en particulier Compilation Voici la commande complète de compilation : gcc -O3 -Wall -D_REENTRANT -std=c99 -c -fmessage-length=0 -lpthread -MMD -MP -MF"dekker.d" -MT"dekker.d" -o"dekker.o" "dekker.c" Remarques Pour résoudre le problème d accès concurrent à la mémoire des processeurs multicoeurs, nous incluons la fonction Barriere(). Source : http ://asm.inightmare.org/opcodelst/index.php?op=sfence Attention, ce programme n affiche qu un nombre en virgule flottante comme résultat. Il s agit en fait du nombre de secondes qui se sont écoulées pendant l exécution de l algorithme. Cela est dû au fait que nous avons exécuté des scripts shell qui automatisent les exécutions de cet algorithme et qui récupèrent leurs

16 10 Documentation des fichiers résultats pour les mettre dans un fichier texte. Il nous faut donc uniquement un nombre, pour pouvoir ensuite le traiter dans les graphiques. Définition dans le fichier dekker.c Documentation des macros #define ASM_BARRIERE Définition à la ligne 32 du fichier dekker.c Documentation des fonctions int dekker (void) Cette fonction permet de lancer l algorithme de Dekker ainsi que d en connaître le temps d exéction final en secondes, sachant qu il est composé de 2 threads et que chacun d entre-eux effectue respectivement et d itérations. Renvoie: Un entier permettant de connaître l état de terminaison (erreur ou non). Définition à la ligne 204 du fichier dekker.c. Référencé par main() void dekker_debut_section_critique (int tache) Permet de faire les instructions nécessaires pour entrer en section critique, selon l algorithme de Dekker. Paramètres: tache -> Le numéro de la tâche qui souhaite entrer en SC. Définition à la ligne 114 du fichier dekker.c void dekker_fin_section_critique (int tache) Permet de faire les instructions pour sortir de la section critique, selon l algorithme de Dekker. Paramètres: tache -> Le numéro de la tâche qui souhaite sortir de la SC. Définition à la ligne 135 du fichier dekker.c Documentation des variables volatile const int NOMBRE_ITERATIONS = Définition à la ligne 40 du fichier dekker.c.

17 3.4 Référence du fichier dekker.h Référence du fichier dekker.h #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <stdbool.h> #include <math.h> #include <time.h> Fonctions int dekker (void) Description détaillée Auteur: Pierre-Dominique Putallaz & Lazhar Farjallah Date: Version: Description Ce fichier décrit les en-têtes des fonctions du fichier dekker.c. Il contient l algorithme de Dekker qui permet de gérer une section critique entre threads de façon sûre et sans accès concurrents à des variables partagées. Définition dans le fichier dekker.h Documentation des fonctions int dekker (void) Cette fonction permet de lancer l algorithme de Dekker ainsi que d en connaître le temps d exéction final en secondes, sachant qu il est composé de 2 threads et que chacun d entre-eux effectue respectivement et d itérations. Renvoie: Un entier permettant de connaître l état de terminaison (erreur ou non). Définition à la ligne 204 du fichier dekker.c. Référencé par main().

18 12 Documentation des fichiers 3.5 Référence du fichier labo2.c #include "dekker.h" #include "cours.h" #include "peterson.h" #include <time.h> Fonctions int main (int argc, char argv) Description détaillée Auteur: Pierre-Dominique Putallaz & Lazhar Farjallah Date: Version: Description Ce fichier contient le programme principal de notre laboratoire. Il permet de lancer un des trois algorithmes, que l on spécifiera par un argument donné au programme ; 1 pour l algorithme de Dekker, 2 pour l algorithme de Peterson et 3 pour l algorithme 2.2 du cours. Le résultat est un nombre en virgule flottante indiquant le nombre de secondes écoulées durant l exécution de l algorithme choisi. La raison de ce choix réside dans le fait que nous automatisons ensuite l exécution de ce programme avec un script shell qui enregistre chaque résultat dans un fichier texte, ligne après ligne, que nous reprenons ensuite afin de traiter les données sous forme de graphiques Compilation Voici la commande complète de compilation : gcc -O3 -Wall -D_REENTRANT -std=c99 -c -fmessage-length=0 -lpthread -MMD -MP -MF"labo2.d" -MT"labo2.d" -o"labo2.o" "labo2.c" Remarques Définition dans le fichier labo2.c.

19 3.5 Référence du fichier labo2.c Documentation des fonctions int main (int argc, char argv) Programme principal de test des algorithmes. On peut spécifier en argument quel algorithme nous voulons lancer. Paramètres: argc Le numéro de l algorithme que nous voulons lancer (1, 2, ou 3) argv Arguments récupérés sous forme de chaîne de caractères. Définition à la ligne 40 du fichier labo2.c. Références cours(), dekker(), et peterson().

20 14 Documentation des fichiers 3.6 Référence du fichier peterson.c #include "peterson.h" Macros #define ASM_BARRIERE Fonctions void peterson_debutsectioncritique (int tache) void peterson_finsectioncritique (int tache) int peterson (void) Description détaillée Auteur: Pierre-Dominique Putallaz & Lazhar Farjallah Date: Version: Description Ce fichier contient le corps des en-têtes des fonctions présentes dans le fichier peterson.h Compilation Voici la commande complète de compilation : gcc -O3 -Wall -D_REENTRANT -std=c99 -c -fmessage-length=0 -lpthread -MMD -MP -MF"peterson.d" -MT"peterson.d" -o"peterson.o" "peterson.c" Remarques Attention, si on ne met pas les variables globales partagées par les threads en "volatile", on permet le compilateur de faire des optimisations dessus, et notamment de changer une boucle while(condition) en while(true) alors que la variable condition est justement une ressource partagée entre threads et très importante. En effet, le compilateur ne sait pas qu on va partager la variable entre plusieurs threads et pourrait de plus mettre ces variables en cache dans les registres du processeur, ce qui serait une catastrophe. Source : http :// Pour résoudre le problème d accès concurrent à la mémoire des processeurs multicoeurs, nous incluons la fonction Barriere(). Source : http ://asm.inightmare.org/opcodelst/index.php?op=sfence Attention, ce programme n affiche qu un nombre en virgule flottante comme résultat. Il s agit en fait du nombre de secondes qui se sont écoulées pendant l exécution de l algorithme. Cela est dû au fait que nous avons exécuté des scripts shell qui automatisent les exécutions de cet algorithme et qui récupèrent leurs

21 3.6 Référence du fichier peterson.c 15 résultats pour les mettre dans un fichier texte. Il nous faut donc uniquement un nombre, pour pouvoir ensuite le traiter dans les graphiques. Définition dans le fichier peterson.c Documentation des macros #define ASM_BARRIERE Définition à la ligne 40 du fichier peterson.c Documentation des fonctions int peterson (void) Cette fonction permet, comme son nom l indique, de lancer l algorithme de Peterson sur 2 tâches simultanées. Elle crée donc 2 threads et les lance simultanément. Ces 2 threads ne sont rien d autre que Tache0 et Tache1, dont les définitions se trouvent ci-dessus. Renvoie: Un entier indiquant l état de terminaison de l algorithme (erreur ou non). Définition à la ligne 220 du fichier peterson.c. Référencé par main() void peterson_debutsectioncritique (int tache) Cette fonction permet de faire les actions nécessaires lors de l entrée en section critique, c est-à-dire mettre en place un verrou efficace et inalterable permettant d empêcher tout entité d accéder ensuite aux variables partagées, après l appel de cette tache La tache qui veut entrer en section critique. Définition à la ligne 133 du fichier peterson.c void peterson_finsectioncritique (int tache) Cette fonction permet de relâcher le verrou, c est-à-dire de redonner le droit à d autres tâches de rentrer en section critique. Le jeton d accès aux ressources critiques est alors à nouveau disponible. Paramètres: tache La tâche qui veut quitter la section critique. Définition à la ligne 148 du fichier peterson.c.

22 16 Documentation des fichiers 3.7 Référence du fichier peterson.h #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <stdbool.h> #include "psleep.h" Fonctions int peterson (void) Description détaillée Auteur: Pierre-Dominique Putallaz & Lazhar Farjallah Date: Version: Description Ce fichier décrit les en-têtes des fonctions du fichier peterson.c. Il contient l algorithme de Peterson qui permet de gérer une section critique entre threads de façon sûre et sans accès concurrents à des variables partagées. Définition dans le fichier peterson.h Documentation des fonctions int peterson (void) Cette fonction permet de relâcher le verrou, c est-à-dire de redonner le droit à d autres tâches de rentrer en section critique. Le jeton d accès aux ressources critiques est alors à nouveau disponible. Paramètres: tache La tâche qui veut quitter la section critique. Cette fonction permet, comme son nom l indique, de lancer l algorithme de Peterson sur 2 tâches simultanées. Elle crée donc 2 threads et les lance simultanément. Ces 2 threads ne sont rien d autre que Tache0 et Tache1, dont les définitions se trouvent ci-dessus. Renvoie: Un entier indiquant l état de terminaison de l algorithme (erreur ou non). Définition à la ligne 220 du fichier peterson.c. Référencé par main().

23 3.8 Référence du fichier psleep.h Référence du fichier psleep.h

24 18 Documentation des fichiers 3.9 Référence du fichier rapport.txt Description détaillée Rapport Auteur: Date: Version: Pierre-Dominique Putallaz & Lazhar Farjallah Nous présentons ici un rapport exposant la démarche du laboratoire ainsi que les explications associées. Cette documentation est tapée dans un fichier texte séparé car il nous parait non approprié d introduire une aussi grande quantité de commentaires dans un fichier source. Tous les détails ommis dans les commentaires des fichiers sources se retrouvent donc dans ce rapport Introduction Dans ce laboratoire de programmation concurrente, nous mettons en oeuvre trois algorithmes d exclusion mutuelle par attente active. Nous prenons ensuite une série de mesures des temps d exécution de ces derniers. Nous évaluons ensuite la baisse de performance liée à certains de ces algorithmes. Enfin, nous comparons ces différents mécanismes d exclusion mutuelle grâce à des graphiques basés sur les mesures effectuées Problème posé Le but de ce laboratoire est de comparer les performances de divers algorithmes d exclusion mutuelle par attente active. Nous sommes intéressés à comparer les 3 implémentations différentes suivantes : l algorithme de Dekker l algorithme de Peterson l algorithme 2.2 du cours Une fois ces algorithmes codés en C et une fois les mesures effectuées, nous nous intéressons aux résultats sous forme graphique et commentons ces derniers Choix d implémentation Nous présentons maintenant les différents choix d implémentation que nous avons décidé de réaliser. Tout d abord, nous avons décidé de créer 3 jeu de fichiers séparés pour chaque algorithme, contenant un fichier source (.c) et un d en-tête (.h). Ensuite, nous avons décidé de créer 2 fonctions distinctes pour les tâches, à savoir Tache_0 et Tache_1 pour chaque algorithme. La raison de ce choix réside dans le fait que nous voulions pouvoir effectuer différentes actions dans le 2 tâches. Par exemple, dans la première tâche, nous effectuons un nombre d itérations n, alors que dans la deuxième tâche, nous effectuons un nombre d itérations de m, avec n non-égal à m. De plus, nous savons pertinemment que dans les cas réels, 2 tâches qui s exécutent en concurrence ne seront jamais exactement les mêmes. Puis nous avons décidé de faire les mesures des algorithmes sur 2 machines différentes. Nous avons donc pour cela créé un répositoire svn dédié à ce laboratoire afin qu on puisse synchroniser le code entre les

25 3.9 Référence du fichier rapport.txt 19 2 machines, et n avoir qu une seule version de ce code, afin qu il soit exactement identique sur les 2 machines. Enfin, nous avons choisi d automatiser la phase de mesure des performances en créeant des scripts automatisés qui lancent un nombre de fois voulu les exécutables et reportent ensuite les résultats dans un fichier texte. Ce dernier choix nous a grandement été utile pour importer ensuite un grand jeu de données dans excel. On aura donc pû effectuer pas moins de 500 mesures par algorithme et par machine Implémentations & Comparaisons Nous développons maintenant la manière dont nous avons comparé les 3 algorithmes. Chacun de ces algorithmes effectue en tout 25 millions d itérations. Ces itérations sont réparties entre 2 tâches, à chaque fois. Dans l algorithme du cours, 12,5 millions d itérations sont effectuées par tâche, alors que dans les 2 autres algorithmes, la première tâche en effectue 10 millions, alors que la 2ème en effectue 15 millions. Dans l algorithme du cours, nous sommes obligés de faire exactement le même nombre d itérations pour chaque tâche car comme l algorithme possède un couplage fort (ping-pong entre les tâches), si elles ne possèdent pas le même nombre d itérations, c est comme si on jouait au ping-pong et qu au bout d un moment notre adversaire ne nous renvoyait plus la balle car il serait parti, et nous attendrions que cette balle revienne infiniment... A la fin de l exécution de chacun de ces algorithmes, la console affiche le temps d exécution écoulé en secondes. Nous avons compilé le même code source final avec exactement les mêmes options de compilation sur 2 machines différentes pour en relever des mesures. Les mesures ont été effectuées par un script shell automatisant non seulement le lancement des exécutables, mais également l enregisrement de leur sortie (c est-à-dire le temps d exécution des algorithmes) dans des fichiers textes (.txt) afin de pouvoir ensuite les importer facilement dans un tableur de type Excel. En ce qui concerne la compilation, nous avons décidé de mettre un niveau d optimisation O3, en prenant soin de mettre les variables partagées en volatile pour éviter des problèmes lors de l optimisation de ces variables. Nous avons également, après réception d un de notre professeur, intégré la fonction Barriere() permettant d assurer la consistance des variables sur des architectures multiprocesseurs Machines/O.S. utilisés Nous avons en tout utilisé 2 machines différentes pour effectuer les mesures. Nous détaillons leurs caractéristiques dans les 2 sections suivantes Machine 1 O.S. : GNU/Linux Ubuntu i686 (32 bits) Processeur : Intel Core Duo T2500 (2M Cache, 2.00 GHz, 667 MHz FSB) Année : 2006 Détails : http ://ark.intel.com/product.aspx?id= Machine 2 O.S. : GNU/Linux Gentoo x86_64 (64 bits) Processeur : Intel Core 2 Duo T9550 (6M Cache, 2.66 GHz, 1066 MHz FSB)

26 20 Documentation des fichiers Année : 2009 Détails : http ://ark.intel.com/product.aspx?id= Résultats des mesures Nous exposons maintenant le résultat des mesures effectuées sur les deux machines précitées sous forme de graphiques. Nous donnons pour chaque graphique la moyenne, la médiane ainsi que l écart- type des mesures. Pour chacun des graphiques, l axe x représente le numéro de la mesure de 1 à 500, l axe y représente le temps en secondes, de 0 à 10. Chaque mesure représente 25 millions d itérations. Il y a 500 mesures et il y a 6 jeu de mesures. Au total, c est donc 25e = 75 milliards d itérations effectuées en tout et pour tout, soit 12,5 milliards d itérations par algorithme testé Machine Algorithme de Dekker, machine 1 Moyenne : 3.89 secondes Médiane : 3.93 secondes Écart-type : 0.55 secondes Durée totale du test : 32 minutes et 25 secondes Nombre moyen d itérations par seconde : 6,42 millions FIG. 3.1 Algorithme de Dekker, machine 1 On voit dans ce premier test que les résultats sont assez éparpillés autour d une moyenne de 3.89 secondes.

27 3.9 Référence du fichier rapport.txt 21 On peut donc en déduire que l algorithme de Dekker sur cette machine n est pas très constant. On notera également certaines valeurs atypique, mais très rares, comme par exemple un temps d exécution de moins de 1 seconde vers la mesure n 300. Il est intéressant de se demander d où peut prvenir une telle mesure atypique. La réponde qu on peut donner est qu il est possible qu à ce moment du test, le processeur a pu être dédié à 100% sans interruption à l exéction de l algorithme. On voit donc que l ordonnanceur n est absolument pas régulier, chose que nous savions et que ce test prouve Algorithme de Peterson, machine 1 Moyenne : 5.60 secondes Médiane : 5.54 secondes Écart-type : 0.67 secondes Durée totale du test : 46 minutes et 40 secondes Nombre moyen d itérations par seconde : 4,46 millions FIG. 3.2 Algorithme de Peterson, machine 1 Ici nous voyons que, par rapport à la figure 3.1 (Dekker), l algorithme de Peterson est un peu plus lent sur cette machine avec une moyenne de 5,60 secondes, contre une moyenne de 3,89 secondes pour Dekker. Les mesures sont également plus éparpillées (écart-type plus grand que ce lui de Dekker). On en conclut donc que sur cette machine, l algorithme de Peterson est moins performant que l algorithme de Dekker. Ne nous étonnons pas de ce constat, car il faut bien avoir à l esprit que beaucoup de choses entrent en compte, notamment le fait que cette machine est relativement vieille (2006) et qu elle est dotée de la toute première génération de processus à double coeurs. Nous verrons de plus dans les tests la machine 2, très différente, que les conclusions ne sont absolument pas les mêmes, avec pourtant un code source et des options de compilation parfaitement similaires. Notons encore qu il aura fallu ici attendre 46 minutes pour que les 500 exécutions de l algorithme se terminent.

28 22 Documentation des fichiers Algorithme 2.2 du cours, machine 1 Moyenne : 6.76 secondes Médiane : 6.79 secondes Écart-type : 0.14 secondes Durée totale du test : 56 minutes et 20 secondes Nombre moyen d itérations par seconde : 3,70 millions FIG. 3.3 Algorithme 2.2 du cours, machine 1 Dans ce 3ème test pour la machine 1, nous voyons cette fois que les points sont beaucoup moins éparpillés. On peut donc dire ici que l algorithme 2.2 du cours est beaucoup plus constant. Par contre, n oublions pas que cet algorithme induit un couplage fort entre les tâches, et qu il n est pas optimal à ce niveau. Cependant, il est intéressant de voir que, malgré cela, il est beaucoup plus constant dans son exécution sur cette machine, par rapport aux 2 autres algorithmes qui le sont beaucoup moins. Notons finalement que cet algorithme, sur cette machine, est celui qui aura été le moins performant, en ce qui concerne le temps d exécution. Il aura en effet fallu attendre ici plus de 56 minutes pour exécuter la totalité des 500 exécutions en série Résultat global, machine 1 Nous proposons maintenant de faire un petit récapitulatif des 3 algorithmes testés pour cette première machine. Nous avons pour cela créé un diagramme en colonnes avec en x les algorithmes testés, et en y le temps d exécution total, en minutes.

29 3.9 Référence du fichier rapport.txt 23 FIG. 3.4 Résultat global, machine 1 On voit clairement ici, qu en moyenne, l algorithme de Dekker sera nettement plus performant. En effet, il est pratiquement 2 fois plus rapide que l algorithme 2.2 du cours. De plus, choses étonnante vu que l algorithme de Peterson s exprime plus simplement que celui de Dekker, ce dernier n en reste pas moins performant. Nous verrons, dans les résultats de la deuxième machine, que ce diagramme est exactement inversé Machine Algorithme de Dekker, machine 2 Moyenne : 2.65 secondes Médiane : 2.24 secondes Écart-type : 1.2 secondes Durée totale du test : 22 minutes et 05 secondes Nombre moyen d itérations par seconde : 9.43 millions

30 24 Documentation des fichiers FIG. 3.5 Algorithme de Dekker, machine 2 La première chose qui saute aux yeux dans ce graphique, c est l éparpillement des points, autrement dit l écart-type du jeu de données. En effet, il est ici de 1,2 secondes, ce qui est de tous les algorithmes testés, le moins constant sur cette machine. Sur la première machine, les résultats étaient également assez éparpillés, mais plus de 2 fois moins. On en conclut donc que sur cette machine, l algorithme de Dekker n est vraiment pas constant dans sont temps d exécution. Il peut en effet tout aussi bien s exécuter entre 1 et 2 secondes qu entre 3 à 6 secondes, par exemple. Nous notons également des valeurs atypiques. Notons finalement, que par rapport à la première machine, ici l algorithme de Dekker est exécuté 1,5 fois plus rapidement. Nous verrons au final qu en plus de cela, pour cette machine, cet algorithme est le moins performant, à l inverse de la machine Algorithme de Peterson, machine 2 Moyenne : 1.85 secondes Médiane : 1.85 secondes Écart-type : 0.03 secondes Durée totale du test : 15 minutes et 25 secondes Nombre moyen d itérations par seconde : 13,51 millions

31 3.9 Référence du fichier rapport.txt 25 FIG. 3.6 Algorithme de Peterson, machine 2 Ce qui est tout de suite frappant dans ce résultat graphique, c est la constance des mesures. En effet, on pourrait pratiquement remplacer les points du graphique par une ligne droite continue. Cela est très positif comme résultat, et s approche même d un idéal qu on aimerait toujours avoir dans ce genre de tests. De plus, on voit également que cet algorithme est plus performant que celui de Dekker sur cette machine, alors que sur l autre machine, c était l inverse. Ajoutons encore que des valeurs atypiques se dessinent nettement, à fréquence régulière, par l apparition de points nettement démarqués, environ toutes les 60 exécutions. Ceci est certainement dû au fait que l O.S. ou autre programme quelconque doit effectuer une certaine tâche à fréquence régulière, ce qui consomme temporairement un peu plus de ressources. Mais si on résonne sur l ensemble du test, cela représente évidemment une goutte d eau dans l océan. Finalement, si nous regardons le résultat de cet algorithme pour la machine 1 dans la figure 3.2, on voit que les choses sont bien différentes. Cela peut s expliquer par la différence d O.S. (Ubuntu 32 bits pour la machine 1, Gentoo 64 bits pour la machine 2), mais également du fait que sur la machine 2, le processeur est bien plus récent, et que le multicoeur est certainement beaucoup mieux géré que dans la première machine, qui, rappelons-le, possède la première génération de processeurs dual core Algorithme 2.2 du cours, machine 2 Moyenne : 1.46 secondes Médiane : 1.45 secondes Écart-type : 0.04 secondes Durée totale du test : 12 minutes et 10 secondes Nombre moyen d itérations par seconde : 17,12 millions

32 26 Documentation des fichiers FIG. 3.7 Algorithme 2.2 du cours, machine 2 Etonamment, l algorithme 2.2 du cours sur cette machine présente un résultat pratiquement semblable à celui de Peterson exposé juste avant. On notera en effet denouveau la constance de l algorithme au niveau de son temps d exécution, ainsi que les valeurs atypiques à fréquence régulière. Notons encore que cet algorithme, pour cette machine, est le plus performant, ce qui était totalement l inverse avec l autre machine.

33 3.9 Référence du fichier rapport.txt Résultat global, machine 2 FIG. 3.8 Résultat global, machine 2 L échelle étant la même que le le graphique global de la machine 1, on voit immédiatement que la machine 2, comme on s y attendait, est bien plus performante que la première. Cela n est pas du tout surprenant, car c est presque 4 ans qui séparent les dates de sortie des 2 machines, ce qui est énorme dans l échelle du temps de l informatique. Par contre, chose assez surprenante, ici le diagramme est totalement l inverse de celui de la machine 1. En effet, ici, plus on va vers la droite, plus l algorithme est performant, alors qu avec la machine 1, plus on va vers la droite, moins l algorithme est performant. Encore une fois, cela vient certainement du fait que les O.S. sont différents sur les 2 machines, et que les processeurs également. On retiendra au final que l algorithme de Peterson est le meilleur ici, si on ne tient pas compte de l algorithme 2.2 du cours, qui rappelons-le n est pas une solution viable, mais qui est présenté ici à titre de comparaison. Notons encore qu en général, sur cette machine, les algorithmes sont de 2 à 4 fois plus rapides que sur l autre Conclusion Ce laboratoire nous aura permis ce voir à quel point les choses peuvent être différentes d une machine à l autre, lorsque l on s attaque à des problèmes de concurrence. Il aura été très intéressant de comprendre

34 28 Documentation des fichiers une des règles esssentielles de la programmation concurrence, celle de toujours considérer toutes les situations possibles. En effet, l ordonnanceur est tellement imprévisible d une machine à l autre, qu on ne peut jamais s appuyer sur un tel critère. Ce qui ressort fortement de ce travail, c est l opposition des résutats entre les 2 machines de test. En effet, pour un code et des options de compilation rigoureusement identiques, les résultats sont de loin homogènes entre les 2 machines. Encore une fois, cela appuie le principe qui dit qu il faut toujours envisager tous les scénarios possible lorsque l on développe un programme concurrent. On ne peut jamais rien prévoir, et il faut une fois pour toutes bannir cette idée de notre esprit. L autre côté intéressant de ce laboratoire est que les 2 machines de test possèdent les deux un O.S. de type GNU/Linux, mais pas semblables. On aura en effet dédié ce laboratoire à l environnement Linux, ce qui est une bonne chose car on sait quel monopole prennent des O.S. comme Windows dans le monde informatique. Nous aurons donc proposé une approche originale et pour nous, bien plus intéressante. Nous aurions pu toutefois décider d utiliser une machine avec Windows, et une autre avec Linux, mais nous avons préféré dédier nos tests à 2 O.S. Linux pour également montrer comment les choses peuvent tout aussi bien être différentes sur 2 machines équipées d un noyau à priori semblable. Nous avons eu au final beaucoup de plaisir à mettre en oeuvre ce laboratoire et nous sommes très satisfaits de nos résultats. De plus, ce que nous avons appris a été très bénéfique et a changé notre vision de voir les choses dans le domaine de la programmation concurrente. Définition dans le fichier rapport.txt.

35 Index ASM_BARRIERE cours.c, 6 dekker.c, 10 peterson.c, 15 cours cours.c, 6 cours.h, 7 cours.c, 5 ASM_BARRIERE, 6 cours, 6 cours.h, 7 cours, 7 peterson_finsectioncritique, 15 peterson.h, 16 peterson, 16 peterson_debutsectioncritique peterson.c, 15 peterson_finsectioncritique peterson.c, 15 psleep.h, 17 rapport.txt, 18 dekker dekker.c, 10 dekker.h, 11 dekker.c, 9 ASM_BARRIERE, 10 dekker, 10 dekker_debut_section_critique, 10 dekker_fin_section_critique, 10 NOMBRE_ITERATIONS, 10 dekker.h, 11 dekker, 11 dekker_debut_section_critique dekker.c, 10 dekker_fin_section_critique dekker.c, 10 labo2.c, 12 main, 13 main labo2.c, 13 NOMBRE_ITERATIONS dekker.c, 10 peterson peterson.c, 15 peterson.h, 16 peterson.c, 14 ASM_BARRIERE, 15 peterson, 15 peterson_debutsectioncritique, 15

Cours Programmation Système

Cours Programmation Système Cours Programmation Système Filière SMI Semestre S6 El Mostafa DAOUDI Département de Mathématiques et d Informatique, Faculté des Sciences Université Mohammed Premier Oujda m.daoudi@fso.ump.ma Février

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation Cycle Ingénierie 2e année SIGL Dernière mise à jour : 19/10/2006 Christophe Porteneuve Threads Principes Cycle de vie Création java.lang.thread

Plus en détail

Métriques de performance pour les algorithmes et programmes parallèles

Métriques de performance pour les algorithmes et programmes parallèles Métriques de performance pour les algorithmes et programmes parallèles 11 18 nov. 2002 Cette section est basée tout d abord sur la référence suivante (manuel suggéré mais non obligatoire) : R. Miller and

Plus en détail

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011 Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr Université de Provence 9 février 2011 Arnaud Labourel (Université de Provence) Exclusion Mutuelle 9 février 2011 1 / 53 Contexte Epistémologique

Plus en détail

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot Chapitre 5 Arithmétique binaire L es codes sont manipulés au quotidien sans qu on s en rende compte, et leur compréhension est quasi instinctive. Le seul fait de lire fait appel au codage alphabétique,

Plus en détail

Gé nié Logiciél Livré Blanc

Gé nié Logiciél Livré Blanc Gé nié Logiciél Livré Blanc Version 0.2 26 Octobre 2011 Xavier Blanc Xavier.Blanc@labri.fr Partie I : Les Bases Sans donner des définitions trop rigoureuses, il faut bien commencer ce livre par énoncer

Plus en détail

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing 3/4/27 Programmation Avancée Multimédia Multithreading Benoît Piranda Équipe SISAR Université de Marne La Vallée Besoin Programmes à traitements simultanés Réseau Réseau Afficher une animation en temps

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Les processus légers : threads. Système L3, 2014-2015 1/31

Les processus légers : threads. Système L3, 2014-2015 1/31 Les processus légers : threads Système L3, 2014-2015 1/31 Les threads Les threads sont des processus légers exécutés à l intérieur d un processus L exécution des threads est concurrente Il existe toujours

Plus en détail

Module 16 : Les fonctions de recherche et de référence

Module 16 : Les fonctions de recherche et de référence Module 16 : Les fonctions de recherche et de référence 16.0 Introduction L une des fonctions les plus importantes d Excel, c est la possibilité de chercher une valeur spécifique dans un grand nombre de

Plus en détail

Programmation système I Les entrées/sorties

Programmation système I Les entrées/sorties Programmation système I Les entrées/sorties DUT 1 re année Université de Marne La vallée Les entrées-sorties : E/O Entrées/Sorties : Opérations d échanges d informations dans un système informatique. Les

Plus en détail

INTRODUCTION À LA PROGRAMMATION CONCURRENTE

INTRODUCTION À LA PROGRAMMATION CONCURRENTE INTRODUCTION À LA PROGRAMMATION CONCURRENTE POLYCOPIÉ DU COURS PCO1 Prof. Claude Evéquoz Prof. Yann Thoma HEIG-VD 2009 Table des matières Table des matières 2 1 Introduction à la programmation concurrente

Plus en détail

Cours de Systèmes d Exploitation

Cours de Systèmes d Exploitation Licence d informatique Synchronisation et Communication inter-processus Hafid Bourzoufi Université de Valenciennes - ISTV Introduction Les processus concurrents s exécutant dans le système d exploitation

Plus en détail

Programmation C. Apprendre à développer des programmes simples dans le langage C

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

I00 Éléments d architecture

I00 Éléments d architecture I00 I Exemples d ordinateur Pour les informaticiens, différentes machines de la vie courante sont des ordinateurs : par exemple les ordinateurs portables, les ordinateurs fixes, mais aussi les supercalculateurs,

Plus en détail

Création et Gestion des tables

Création et Gestion des tables Création et Gestion des tables Version 1.0 Z Grégory CASANOVA 2 Sommaire 1 Introduction... 3 2 Pré-requis... 4 3 Les tables... 5 3.1 Les types de données... 5 3.1.1 Les types de données Sql Server... 5

Plus en détail

Le prototype de la fonction main()

Le prototype de la fonction main() Le prototype de la fonction main() 1. Introduction...1 2. Paramètres et type de retour de la fonction main()...1 3. Exemple 1...2 4. La fonction exit() du C...2 5. Détecter le code de retour d un programme

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

REALISATION d'un. ORDONNANCEUR à ECHEANCES

REALISATION d'un. ORDONNANCEUR à ECHEANCES REALISATION d'un ORDONNANCEUR à ECHEANCES I- PRÉSENTATION... 3 II. DESCRIPTION DU NOYAU ORIGINEL... 4 II.1- ARCHITECTURE... 4 II.2 - SERVICES... 4 III. IMPLÉMENTATION DE L'ORDONNANCEUR À ÉCHÉANCES... 6

Plus en détail

Nom de l application

Nom de l application Ministère de l Enseignement Supérieur et de la Recherche Scientifique Direction Générale des Etudes Technologiques Institut Supérieur des Etudes Technologiques de Gafsa Département Technologies de l Informatique

Plus en détail

Compression de Données - Algorithme de Huffman Document de Conception

Compression de Données - Algorithme de Huffman Document de Conception ROLLET Samuel SALLE Jennifer Compression de Données - Algorithme de Huffman Document de Conception Projet d'algorithmique et Structure des Données 1 SOMMAIRE 1. Domaine d application....4 1.1 Objectifs

Plus en détail

Quelques éléments de compilation en C et makefiles

Quelques éléments de compilation en C et makefiles Quelques éléments de compilation en C et makefiles Guillaume Feuillade 1 Compiler un programme C Le principe de la compilation consiste à passer d un ensemble de fichiers de code à un programme exécutable

Plus en détail

Arguments d un programme

Arguments d un programme Arguments d un programme L2 SPI, Bruno Jacob 1 Arguments Quand on appelle un programme dans un environnement UNIX ou MS- DOS, on compose une ligne de commandes de la forme : nom-du-programme argument1

Plus en détail

Network musical jammin

Network musical jammin Network musical jammin Projet PC2R - 2015 Pour ce projet, nous allons réaliser une application permettant d effectuer des jams sessions en temps-réel entre des musiciens répartis à travers le monde. Le

Plus en détail

Initiation au HPC - Généralités

Initiation au HPC - Généralités Initiation au HPC - Généralités Éric Ramat et Julien Dehos Université du Littoral Côte d Opale M2 Informatique 2 septembre 2015 Éric Ramat et Julien Dehos Initiation au HPC - Généralités 1/49 Plan du cours

Plus en détail

Introduction à la Programmation Parallèle: MPI

Introduction à la Programmation Parallèle: MPI Introduction à la Programmation Parallèle: MPI Frédéric Gava et Gaétan Hains L.A.C.L Laboratoire d Algorithmique, Complexité et Logique Cours du M2 SSI option PSSR Plan 1 Modèle de programmation 2 3 4

Plus en détail

Exigences système Edition & Imprimeries de labeur

Exigences système Edition & Imprimeries de labeur Exigences système Edition & Imprimeries de labeur OneVision Software France Sommaire Asura 9.5, Asura Pro 9.5, Garda 5.0...2 PlugBALANCEin 6.5, PlugCROPin 6.5, PlugFITin 6.5, PlugRECOMPOSEin 6.5, PlugSPOTin

Plus en détail

Retour d expérience RATP. Intégrer le test de performance au cœur du processus de développement agile. Challenges, techniques, résultats.

Retour d expérience RATP. Intégrer le test de performance au cœur du processus de développement agile. Challenges, techniques, résultats. Retour d expérience RATP Intégrer le test de performance au cœur du processus de développement agile. Challenges, techniques, résultats. Les intervenants Alexis Bourgeois Chef de projet MOE (front web)

Plus en détail

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores INTRODUCTION AUX SYSTEMES D EXPLOITATION TD2 Exclusion mutuelle / Sémaphores Exclusion mutuelle / Sémaphores - 0.1 - S O M M A I R E 1. GENERALITES SUR LES SEMAPHORES... 1 1.1. PRESENTATION... 1 1.2. UN

Plus en détail

DAns un système multi-utilisateurs à temps partagé, plusieurs processus

DAns un système multi-utilisateurs à temps partagé, plusieurs processus Chapitre 8 Ordonnancement des processus Dns un système multi-utilisateurs à temps partagé, plusieurs processus peuvent être présents en mémoire centrale en attente d exécution. Si plusieurs processus sont

Plus en détail

Sciences de Gestion Spécialité : SYSTÈMES D INFORMATION DE GESTION

Sciences de Gestion Spécialité : SYSTÈMES D INFORMATION DE GESTION Sciences de Gestion Spécialité : SYSTÈMES D INFORMATION DE GESTION Classe de terminale de la série Sciences et Technologie du Management et de la Gestion Préambule Présentation Les technologies de l information

Plus en détail

Systèmes d exploitation

Systèmes d exploitation Systèmes d exploitation Virtualisation, Sécurité et Gestion des périphériques Gérard Padiou Département Informatique et Mathématiques appliquées ENSEEIHT Novembre 2009 Gérard Padiou Systèmes d exploitation

Plus en détail

Mobile OGSI.NET: Grid Computing on Mobile Devices

Mobile OGSI.NET: Grid Computing on Mobile Devices Mobile OGSI.NET: Grid Computing on Mobile Devices David C.Chu Université de Californie, Berkeley Marty Humphrey Université de Virginie Publié en Novembre 2004 lors de la 5ième conférence IEEE/ACM International

Plus en détail

Boîte à outils OfficeScan

Boîte à outils OfficeScan Boîte à outils OfficeScan Manuel de l'administrateur Sécurité des points finaux Protection ti en ligne Sécurité Web Trend Micro Incorporated se réserve le droit de modifier sans préavis ce document et

Plus en détail

Maarch Framework 3 - Maarch. Tests de charge. Professional Services. http://www.maarch.fr. 11, bd du Sud Est 92000 Nanterre

Maarch Framework 3 - Maarch. Tests de charge. Professional Services. http://www.maarch.fr. 11, bd du Sud Est 92000 Nanterre Maarch Professional Services 11, bd du Sud Est 92000 Nanterre Tel : +33 1 47 24 51 59 Fax : +33 1 47 24 54 08 Maarch Framework 3 - Maarch PS anime le développement d un produit d archivage open source

Plus en détail

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Logiciel Libre Cours 3 Fondements: Génie Logiciel Logiciel Libre Cours 3 Fondements: Génie Logiciel Stefano Zacchiroli zack@pps.univ-paris-diderot.fr Laboratoire PPS, Université Paris Diderot 2013 2014 URL http://upsilon.cc/zack/teaching/1314/freesoftware/

Plus en détail

Bases de programmation. Cours 5. Structurer les données

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

UNE VITESSE DE SAUVEGARDE EXCEPTIONNELLE

UNE VITESSE DE SAUVEGARDE EXCEPTIONNELLE UNE VITESSE DE SAUVEGARDE EXCEPTIONNELLE Commentaires des clients sur Veeam Backup & Replication 4.0 Fruit d un travail continu de recherche et développement, et en réponse aux commentaires des clients,

Plus en détail

Représentation des Nombres

Représentation des Nombres Chapitre 5 Représentation des Nombres 5. Representation des entiers 5.. Principe des représentations en base b Base L entier écrit 344 correspond a 3 mille + 4 cent + dix + 4. Plus généralement a n a n...

Plus en détail

Mon premier rpm. http://alexandre-mesle.com 7 juin 2010. 1 Avant de commencer 2 1.1 RPM... 2 1.2 URPMI... 2 1.3 RPMBUILD... 2

Mon premier rpm. http://alexandre-mesle.com 7 juin 2010. 1 Avant de commencer 2 1.1 RPM... 2 1.2 URPMI... 2 1.3 RPMBUILD... 2 Mon premier rpm http://alexandre-mesle.com 7 juin 2010 Table des matières 1 Avant de commencer 2 1.1 RPM....................................................... 2 1.2 URPMI.....................................................

Plus en détail

Créer le schéma relationnel d une base de données ACCESS

Créer le schéma relationnel d une base de données ACCESS Utilisation du SGBD ACCESS Polycopié réalisé par Chihab Hanachi et Jean-Marc Thévenin Créer le schéma relationnel d une base de données ACCESS GENERALITES SUR ACCESS... 1 A PROPOS DE L UTILISATION D ACCESS...

Plus en détail

Outsourcing : la sauvegarde en ligne des données de l entreprise.

Outsourcing : la sauvegarde en ligne des données de l entreprise. Outsourcing : la sauvegarde en ligne des données de l entreprise. Sur quels marchés votre entreprise de Sauvegarde en Ligne évolue t elle? Dans un contexte de montée en puissance de l insécurité, les solutions

Plus en détail

Les structures. Chapitre 3

Les structures. Chapitre 3 Chapitre 3 Les structures Nous continuons notre étude des structures de données qui sont prédéfinies dans la plupart des langages informatiques. La structure de tableau permet de regrouper un certain nombre

Plus en détail

Problèmes liés à la concurrence

Problèmes liés à la concurrence ENS Cachan Problématique Difficile de gérer la concurrence : Pas toujours facile d avoir des fonctions réentrantes. Risque de race condition : ex : x :=x+1 x :=x+1 On voudrait des blocs d instructions

Plus en détail

Chap III : Les tableaux

Chap III : Les tableaux Chap III : Les tableaux Dans cette partie, on va étudier quelques structures de données de base tels que : Les tableaux (vecteur et matrice) Les chaînes de caractères LA STRUCTURE DE TABLEAU Introduction

Plus en détail

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

VIII- Circuits séquentiels. Mémoires

VIII- Circuits séquentiels. Mémoires 1 VIII- Circuits séquentiels. Mémoires Maintenant le temps va intervenir. Nous avions déjà indiqué que la traversée d une porte ne se faisait pas instantanément et qu il fallait en tenir compte, notamment

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0

Plus en détail

Processus d Informatisation

Processus d Informatisation Processus d Informatisation Cheminement de la naissance d un projet jusqu à son terme, deux grandes étapes : Recherche ou étude de faisabilité (en amont) L utilisateur a une idée (plus ou moins) floue

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

3IS - Système d'exploitation linux - Programmation système

3IS - Système d'exploitation linux - Programmation système 3IS - Système d'exploitation linux - Programmation système 2010 David Picard Contributions de : Arnaud Revel, Mickaël Maillard picard@ensea.fr Environnement Les programmes peuvent être exécutés dans des

Plus en détail

Tout savoir sur le matériel informatique

Tout savoir sur le matériel informatique Tout savoir sur le matériel informatique Thème de l exposé : Les Processeurs Date : 05 Novembre 2010 Orateurs : Hugo VIAL-JAIME Jérémy RAMBAUD Sommaire : 1. Introduction... 3 2. Historique... 4 3. Relation

Plus en détail

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie Chapitre I : Les bases du C++ Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie du logiciel, et ce depuis

Plus en détail

Diagrammes de Package, de déploiement et de composants UML

Diagrammes de Package, de déploiement et de composants UML labsticc.univ-brest.fr/pages_perso/babau/ Diagrammes de Package, de déploiement et de composants UML Jean-Philippe Babau Département Informatique, UFR Sciences, Laboratoire Lab-STICC 2 1 Plan Description

Plus en détail

1 Mesure de la performance d un système temps réel : la gigue

1 Mesure de la performance d un système temps réel : la gigue TP TR ENSPS et MSTER 1 Travaux Pratiques Systèmes temps réel et embarqués ENSPS ISV et Master TP1 - Ordonnancement et communication inter-processus (IPC) Environnement de travail Un ordinateur dual-core

Plus en détail

WASD en environnement haute disponibilité Jean-Pierre PETIT WASD Le produit WASD WASD signifie Wide Area Surveillance Division C est le nom d une division de la défense australienne qui a accepté en 1996

Plus en détail

Encryptions, compression et partitionnement des données

Encryptions, compression et partitionnement des données Encryptions, compression et partitionnement des données Version 1.0 Grégory CASANOVA 2 Compression, encryption et partitionnement des données Sommaire 1 Introduction... 3 2 Encryption transparente des

Plus en détail

Utilisez Toucan portable pour vos sauvegardes

Utilisez Toucan portable pour vos sauvegardes Utilisez Toucan portable pour vos sauvegardes Préambule Toucan est un logiciel libre et gratuit, permettant de réaliser des sauvegardes ou synchronisation de vos données. Il est possible d automatiser

Plus en détail

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés

Plus en détail

Exigences système Edition & Imprimeries de labeur

Exigences système Edition & Imprimeries de labeur Exigences système Edition & Imprimeries de labeur OneVision Software France Sommaire Asura 10.2, Asura Pro 10.2, Garda 10.2...2 PlugBALANCEin10.2, PlugCROPin 10.2, PlugFITin 10.2, PlugRECOMPOSEin 10.2,

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

1 Recherche en table par balayage

1 Recherche en table par balayage 1 Recherche en table par balayage 1.1 Problème de la recherche en table Une table désigne une liste ou un tableau d éléments. Le problème de la recherche en table est celui de la recherche d un élément

Plus en détail

Tests de performance du matériel

Tests de performance du matériel 3 Tests de performance du matériel Après toute la théorie du dernier chapitre, vous vous demandez certainement quelles sont les performances réelles de votre propre système. En fait, il y a plusieurs raisons

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs Architecture Matérielle des Systèmes Informatiques. S1 BTS Informatique de Gestion 1 ère année THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT Dossier 1 L environnement informatique. Objectifs Enumérer et

Plus en détail

Module : Virtualisation à l aide du rôle Hyper-V

Module : Virtualisation à l aide du rôle Hyper-V Windows Server 2008 pour l'enseignement Module : Virtualisation à l aide du rôle Hyper-V Agenda du module Présentation d Hyper-V Installation d Hyper-V Configuration d Hyper-V Administration des machines

Plus en détail

Windows Internet Name Service (WINS)

Windows Internet Name Service (WINS) Windows Internet Name Service (WINS) WINDOWS INTERNET NAME SERVICE (WINS)...2 1.) Introduction au Service de nom Internet Windows (WINS)...2 1.1) Les Noms NetBIOS...2 1.2) Le processus de résolution WINS...2

Plus en détail

Alcatel-Lucent VitalQIP Appliance Manager

Alcatel-Lucent VitalQIP Appliance Manager Alcatel-Lucent Appliance Manager Solution complète de gestion des adresses IP et de bout en bout basée sur des appliances Rationalisez vos processus de gestion et réduisez vos coûts d administration avec

Plus en détail

Reproductibilité des expériences de l article "Analyse et réduction du chemin critique dans l exécution d une application"

Reproductibilité des expériences de l article Analyse et réduction du chemin critique dans l exécution d une application Reproductibilité des expériences de l article "Analyse et réduction du chemin critique dans l exécution d une application" Katarzyna Porada and David Parello and Bernard Goossens Univ. Perpignan Via Domitia,

Plus en détail

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases

Plus en détail

Rapport d activité. Mathieu Souchaud Juin 2007

Rapport d activité. Mathieu Souchaud Juin 2007 Rapport d activité Mathieu Souchaud Juin 2007 Ce document fait la synthèse des réalisations accomplies durant les sept premiers mois de ma mission (de novembre 2006 à juin 2007) au sein de l équipe ScAlApplix

Plus en détail

Suites numériques 3. 1 Convergence et limite d une suite

Suites numériques 3. 1 Convergence et limite d une suite Suites numériques 3 1 Convergence et limite d une suite Nous savons que les termes de certaines suites s approchent de plus en plus d une certaine valeur quand n augmente : par exemple, les nombres u n

Plus en détail

Programmation impérative

Programmation impérative Programmation impérative Cours 4 : Manipulation des fichiers en C Catalin Dima Organisation des fichiers Qqs caractéristiques des fichiers : Nom (+ extension). Chemin d accès absolu = suite des noms des

Plus en détail

PHP. Performances. Audit et optimisation LAMP. Julien Pauli. Cyril Pierre de Geyer. Guillaume Plessis. Préface d Armel Fauveau

PHP. Performances. Audit et optimisation LAMP. Julien Pauli. Cyril Pierre de Geyer. Guillaume Plessis. Préface d Armel Fauveau Performances PHP Julien Pauli Cyril Pierre de Geyer Guillaume Plessis Préface d Armel Fauveau Groupe Eyrolles, 2012, ISBN : 978-2-212-12800-0 Table des matières Avant-propos... 1 Pourquoi ce livre?.....................................................

Plus en détail

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique DOMAINE P3.C3.D1. Pratiquer une démarche scientifique et technologique, résoudre des

Plus en détail

Algorithme. Table des matières

Algorithme. Table des matières 1 Algorithme Table des matières 1 Codage 2 1.1 Système binaire.............................. 2 1.2 La numérotation de position en base décimale............ 2 1.3 La numérotation de position en base binaire..............

Plus en détail

Le langage C. Séance n 4

Le langage C. Séance n 4 Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de

Plus en détail

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée. ANALYSE 5 points Exercice 1 : Léonie souhaite acheter un lecteur MP3. Le prix affiché (49 ) dépasse largement la somme dont elle dispose. Elle décide donc d économiser régulièrement. Elle a relevé qu elle

Plus en détail

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

Plus en détail

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike

Plus en détail

Editeur de solutions innovantes C 3. Solution globale managée de communication et de téléphonie sur IP

Editeur de solutions innovantes C 3. Solution globale managée de communication et de téléphonie sur IP Editeur de solutions innovantes C 3 Solution globale managée de communication et de téléphonie sur IP Intelligence et fiabilité au coeur du système de communication de l entreprise de manière simple et

Plus en détail

Initiation. àl algorithmique et à la programmation. en C

Initiation. àl algorithmique et à la programmation. en C Initiation àl algorithmique et à la programmation en C Initiation àl algorithmique et à la programmation en C Cours avec 129 exercices corrigés Illustration de couverture : alwyncooper - istock.com Dunod,

Plus en détail

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996]

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996] Mesure de performances [Architecture des ordinateurs, Hennessy & Patterson, 1996] Croissance des performances des microprocesseurs Avant le milieu des années 80, le gain dépendait de la technologie. Après,

Plus en détail

I. Introduction aux fonctions : les fonctions standards

I. Introduction aux fonctions : les fonctions standards Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons

Plus en détail

V- Manipulations de nombres en binaire

V- Manipulations de nombres en binaire 1 V- Manipulations de nombres en binaire L ordinateur est constitué de milliards de transistors qui travaillent comme des interrupteurs électriques, soit ouverts soit fermés. Soit la ligne est activée,

Plus en détail

Évaluation et implémentation des langages

Évaluation et implémentation des langages Évaluation et implémentation des langages Les langages de programmation et le processus de programmation Critères de conception et d évaluation des langages de programmation Les fondations de l implémentation

Plus en détail

Cours 1 : La compilation

Cours 1 : La compilation /38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà

Plus en détail

Ingénierie des méthodes Agiles : Que cache l opposition entre déploiement et livraison en continu? Faut-il adopter DevOps 1?

Ingénierie des méthodes Agiles : Que cache l opposition entre déploiement et livraison en continu? Faut-il adopter DevOps 1? DEVOPS et le déploiement d application Les Livres Blancs de MARTE Ingénierie des méthodes Agiles : Que cache l opposition entre déploiement et livraison en continu? Faut-il adopter DevOps 1? L alignement

Plus en détail

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

Plus en détail

CAHIER DE S CHARGE S Remote Workload Manager

CAHIER DE S CHARGE S Remote Workload Manager CAHIER DE S CHARGE S Remote Workload Manager équipe Regis Rouyard (rouyar_r) Jonathan Bouchot (boucho_o) Johan Massin (massin_j) Jacky Rouquette (rouque_j) Yannick Boillon (boillo_o) EPITECH INOVATION

Plus en détail

Leçon N 4 : Statistiques à deux variables

Leçon N 4 : Statistiques à deux variables Leçon N 4 : Statistiques à deux variables En premier lieu, il te faut relire les cours de première sur les statistiques à une variable, il y a tout un langage à se remémorer : étude d un échantillon d

Plus en détail

Progiciels pour TPE - PME - PMI

Progiciels pour TPE - PME - PMI Gexos GexosPro Progiciels pour TPE - PME - PMI Parce qu une entreprise organisée est une entreprise plus productive et plus proche de sa clientèle, nous avons conçu la gamme GexosPro, progiciels de gestion

Plus en détail

Outils pour la pratique

Outils pour la pratique Cinquième partie Outils pour la pratique 121 CHAPITRE 1 Les bases des séances de TP Avant de lire cettre section, il est suggéré de relire vos notes de cours se rapportant au système d exploitation Unix.

Plus en détail