PCO1 - Laboratoire 2 : Exclusion mutuelle par attente active.
|
|
- Rémy Corbeil
- il y a 8 ans
- Total affichages :
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 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étailIntroduction 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étailIN 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étailJ2SE 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étailMé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étailExclusion 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étailArithmé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étailGé 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étail1/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étailAlgorithmique 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étail03/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étailINITIATION 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étailLes 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étailModule 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étailProgrammation 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étailINTRODUCTION À 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étailCours 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étailProgrammation 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étailI00 É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étailCré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étailLe 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étailTravaux 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étailREALISATION 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étailNom 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étailCompression 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étailQuelques é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étailArguments 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étailNetwork 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étailInitiation 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étailIntroduction à 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étailExigences 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étailRetour 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étailINTRODUCTION 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étailDAns 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étailSciences 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étailSystè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étailMobile 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étailBoî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étailMaarch 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étailLogiciel 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étailBases 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étailUNE 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étailRepré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étailMon 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étailCré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étailOutsourcing : 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étailLes 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étailProblè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étailChap 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étail1. 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étailVIII- 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étailEPREUVE 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étailProcessus 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étailProgrammer 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étail3IS - 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étailTout 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étailLe 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étailDiagrammes 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étail1 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étailWASD 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étailEncryptions, 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étailUtilisez 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étailTable 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étailExigences 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étailTP 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étail1 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étailTests 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étailINTRODUCTION 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étailTHEME 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étailModule : 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étailWindows 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étailAlcatel-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étailReproductibilité 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étailUEO11 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étailRapport 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étailSuites 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étailProgrammation 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étailPHP. 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étailSOCLE 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étailAlgorithme. 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étailLe 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étailSoit 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étailCours 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 Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike
Plus en détailEditeur 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étailInitiation. à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étailMesure 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étailI. 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étailV- 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 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étailCours 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étailIngé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étailTP 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étailCAHIER 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étailLeç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étailProgiciels 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étailOutils 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