Home
rapport - Fisoft1
Contents
1. Le tableau etat indique la disponibilit des serveurs 1 Serveur disponible ou n a pas t contact O Le serveur n a pas r pondu une demande de connexion Ce tableau utilis ci dessous est initialis avec des 1 Choix du serveur contacter par le client Avec les fichiers de configuration le client peut disposer d un certains nombre de serveurs contacter Un algorithme de choix par d faut est utilis pour faire le choix Principe de cet algorithme 1 On prend le premier le tableau server C est aussi le premier en commen ant par le d but dans le fichier de configuration du client dont la case correspondante dans le tableau etat est gale 1 2 On essaie de contacter ce serveur 3 Si la connexion s tablit l algorithme du choix est termin 4 Sinon on supprime ce serveur la suppression se fait simplement en met tant O dans la case correspondante dans le tableau etat 5 On retourne l tape 1 Cet algorithme est impl ment par la focntion choisir_serveur_defaut du mo dule test c A noter aussi que cet algorithme est appliqu s il n y a pas d option particu li re Par exemple si on appelle le client avec l option r compilation r partie un autre algorithme est utilis Voir chapitre Troisi me tranche CHAPITRE 2 DEUXI ME TRANCHE 10 2 3 2 Protocole de d couverte Ce protocole a t propos par le sujet pour permettre au client de demander au serveur
2. Une autre contrainte impos e par la mani re de parcourir les param tres Le nom du fichier compiler doit tre le dernier param tre 6 1 3 Exemples Commande d couverte client discovery compilers Fixer l architecture 26 CHAPITRE 6 MANUEL D UTILISATION 27 client v sunOs c test c R partion Pour utiliser la r partition il faut configurer le makefile CC client r puis make j Un fichier makefile crd est fourni avec le code dans le dossier src client qui permet de compiler notre projet avec l option de r partition 6 2 serveur 6 2 1 Fichier de configuration Le fichier de configuration pour le client est client conf il doit tre dans le m me dossier que l ex cutable 6 2 2 Utilisation La configuration du serveur se fait principalement avec le fichier de confi guration Au lancement il prend la ligne de commande le num ro de port principal 6 2 3 Exemple serveur 1037 6 3 Fichiers de log Le client et le serveur g n re chacun un fichier de log crd log Ce fichier est cr dans le m me dossier que l ex cutable Il offre la possibilit de voir les principales op rations effectu es par le serveur ou le client Les lignes du fichier de log ont un format sp cifiques 3636 gt Thu May 18 23 49 09 200 Nouvelle session pid date et heure message Conclusion Ce projet combinant la programmation r seau et syst me tait une bonne occasion
3. de configuration Les fichiers de configuration cot serveur et client utilisent la m me syntaxe propos e par le sujet Pour cette raison ils utilisent le m me module config c pour parcourir les fichiers de configuration Structure des donn es Pour stocker les informations r cup r s des fichiers de configuration la struc ture suivante a t utilis typedef struct config_file_ char compilers La liste des architectures support s int nbCompilers Nombre d architecturex char x gcc_path Les chemins d acc s vers les gcc CHAPITRE 2 DEUXI ME TRANCHE 9 correspondants ces architectures char default_compiler L architecture par d faut int discovery_port Port d couverte char server Tableau des serveurs int nbServers Le nombre des serveurs int port Les ports corresponadants char providers int etat tableau indiquant si le serveur correspondant est disponible ou pas config_file Le module config c offre aussi les diff rents accesseurs pour utiliser cette structure Parcourt des fichiers de configuration Lors de l utilisation du fichier de configuration le client ou le serveur effectue un parsing du fichier pour remplir la structure Le parcourt se base sur le m me principe que pour l interpr tation des com mandes du protocole de communication TCP Le remplissage de la structure se fait donc en temps r l un seul parcourt est effectu
4. 2 828 dns eine Ed eu 6 23 Exemplen o aaa A en ete re 6 3 Fichiers de log Introduction La compilation r partie et d localis e est le but principal de ce projet Nous devons traiter dans ce contexte l architecture Client Serveur dans le do maine des r seaux D une part nous devons aboutir des solutions pour g rer convenablement la communication Client Serveur donc la d localisation et d autre part bien optimiser les choix en cas de plusieurs serveurs dans le deuxi me contexte de r partition Chapitre 1 Premi re tranche 1 1 Exigences et analyse des points du sujet Au niveau de cette premi re tranche du projet nous g rons tout simplement la connexion client serveur et une premi re tape de la compilation d localis e Cette premi re partie du projet g re principalement les deux fonctionnalit s sui vantes Double r le d un client 1 un compilateur C 2 communication avec le serveur Compilation d localis e cette t che a bien exploit les avantages du protocole TCP contr le de flux 1 2 Conception 1 2 1 Gestion des clients En g n ral un serveur TCP doit traiter plusieurs connexions simultan ment Nous sommes ainsi amen s penser la fa on avec laquelle g rer les clients Les diff rents clients sont g r s par des processus fils chez le serveur cette solution sera expliqu e d avantage dans la section 1 33 1 2 2 Gestion des fichiers clien
5. ANCHE 8 Le contenu de ces fichiers doit donc tre parcouru et analys avant de traiter les requ tes serveurs et clients 2 2 3 Choix entre thread et processus pour le protocole de d couvert Concernant la gestion des clients aupr s du serveur dans la cadre du proto cole de d couverte nous avons fait un certain choix en terme de programmation syst me La justification de ce choix doit tre pr c d d une certaine pr cision de la diff rence entre les threads et les processus Threads et processus Un processus n cessite un changement de contexte tant donn qu il a son propre espace m moire ce qui n est pas le cas des threads dits processus l gers qui partagent l espace m moire du processus au sein duquel ils sont manipul s Ainsi si nous utilisons un processus classique pour une telle d couverte simple le changement de contexte sera long et presque 90 de ce temps sera consacr la gestion de m moire Gestion des clients avec un thread A ce niveau nous avons opt pour une gestion du client par un thread lors d une connexion UDP de d couverte aupr s du serveur Nous consid rons que la t che de d couverte effectu e chaque fois par un client aupr s du serveur ne n cessite pas vraiment un processus ind pendant Ainsi afin de minimiser les changements de contexte notre processus client aura tout simplement partager l espace m moire du processus serveur 2 3 R alisation et tests 2 3 1 Fichiers
6. Projet compilation r partie et d localis e Rapport projet R seau et Syst me BEN GAZDALLAH FETEN BEN MBARKA MOEZ JEMOUI HANENE DOUBLI LOBNA Table des mati res Premi re tranche 1 1 Exigences et analyse des points du sujet 1 52 Conception ceci de los a 1 2 1 Gestion des clients 1 2 2 Gestion des fichiers clients 1 2 3 Protocol de communication 1 3 R alisation et tests 1 3 1 Structure des donn es 1 3 2 Connexion TOP 1 3 3 Pr paration de la requ te de compilation par le client 1 3 4 Impl mentation du protocol de communication 1 3 5 Traitement de la requ te client 1 3 6 Tests de la premi re tranche Deuxi me tranche 2 1 Exigences et analyse des points du sujet 2 2 Conception 5 5 d u 4 8 Logan 4 Man RRR A a 2 2 1 Plus de transparence pour l utilisateur 2 2 2 Gestion des fichier de configuration 2 2 3 Choix entre thread et processus pour le protocole de d COUVETL e Biens ne O AU X reve ee 2 3 R alisation et tests 2 3 1 Fichiers de configuration 2 3 2 Protocole de d couverte 2 3 3 Cot client 2 252 4 8 La AM AU EE Ms a dla 67 X 2 3 4 Tests de la deuxi me tranche Troisi me tr
7. _serveur_4 char cmd La commande int nb_arg Nombre d arg char fichier Le nom du fichier a recevoir char fichier_tmp Le nom de fichier temporaire pour le fichier g n r sur le serveur char stdout_tmp Le nom du fichier vers lequel a t redirig la sortie standardx char stderr_tmp Le nom du fichier vers lequel a t redirig la sortie standard d erreurs int value Contient la valeur de retour de la commande de compilation ou un nom de signalx int taille La taille du fichier re u int fdClient Le descripteur du fichier permettant la connexion avec le client demandant la compilationx cmd_compilation_ serveur Cot client Le client aussi dispose d une structure de donn es permettant de stocker les param tres de la requ te qu il se pr te faire typedef struct cmd_compilation_client_ char cmd La commande char target optionnel version du compilateur a utiliser char fichier_objet Le nom du fichier objet a recevoir CHAPITRE 1 PREMI RE TRANCHE 4 int value Contient la valeur de retour de la commande de compilation ou un nom de signal int fdServeur Le descripteur du fichier permettant la connexion avec le serveur int repartition 1 La r partition est activ O sinon Fcmd_compilation_client 1 3 2 Connexion TCP Cot serveur La mise en place du serveur est assur e par les modules suivants
8. anche 3 1 Exigences et analyse des points du sujet 32 Conception etikedo E la ee es 3 2 1 Communication des clients 3 2 2 Algorithme de s lection de serveur 3 3 R alisations et tests 3 3 1 Structure des donn es 3 3 2 Lecture des fichiers des tats des serveurs 3 3 3 Tests de la troisi me tranche 3 4 Probl mes rencontr s 3 4 1 Gestion des s maphores o or amp HS y 09 D ND ND ND D NII IN TABLE DES MATI RES 4 Description globale et maintenance 4 1 Sch ma global des modules 4 2 Description des modules 42 1 SEL VEUL aa us dd de A M NT eng ue et A EA E RE a 422 Client 50 het Loue MAN et dt Seat 38 39 39 4 2 3 Communication Evolution et conception avanc e 5 1 Utilisation des threads pour la compilation 5 2 Gestion des clients non locaux 5 2 1 Extension du protocole de d couverte Manuel d utilisation 6 1 Client mis LL BAR Rd de TR a e 6 1 1 Fichier de configuration 6 1727 Utilisations 2 4 2 2 a e Un A te ee etes 6 11 37 Exemples 268 8 a Le RME LE LES 02 ger VEUT a Pan E md md ve ad ch ec OR EC RU 6 2 1 Fichier de configuration 6 2 2 Utilisation 5 2 5 2e
9. ation des s maphores Les fonctions sont les suivantes sem_t initialiser_sem int etat CHAPITRE 4 DESCRIPTION GLOBALE ET MAINTENANCE 24 Cette fonction initialise la s maphore soit avec la valeur 1 d verrouill e ou O pour d verrouiller void fermer_sem sem_t verrouiller_sem sem_t sm void deverrouiller_sem sem_t sm Chapitre 5 Evolution et conception avanc e 5 1 Utilisation des threads pour la compilation Lors de la conception de la troisi me tranche nous avons abord dans la section 2 2 3 page 8 la possibilt d optimisation d utilisation de m moire possible avec les threads D autre part dans la premi re tranche voir la section 1 2 1 page 2 les clients sont consid r s via des processus fils aupr s du serveur Une conception plus avanc e aurait pu permettre d optimiser encore plus ce point en consid rant les clients comme des threads aupr s du serveur dans tous les contextes Compilation ou d couverte 5 2 Gestion des clients non locaux Comme nous l avons d j pr cis dans la section 3 2 1 13 pour notre algo rithme actuelle de la r partition de charge selon les tats des serveurs occupation et taille des fichiers manipul s nous n avons pas impl ment l algorithme d op timisation des choix en fonction des clients distants par rapport notre client tentant de faire le bon choix sur des autres machines 5 2 1 Extension du protocole de d couverte Plusieurs commandes d couve
10. code des modules principaux c est dire que les fonctions principales d crivant nos algorithmes et nos choix de base et leurs utilit 4 2 1 Serveur Dans le r pertoire server de notre projet nous avons le code du module Ser veur Rappelons que les fonctionnalit s principales de notre serveur sont les suivantes init_serveur Ce fichier init_seveur c contient les fonctions de base pour initialiser le ser veur pour les connexions La fonction serveur_tcp int serveur_tcp int numero_port Cette fonction permet de d marrer un service TCP sur le port indiqu en 1 Cr ant une socket socket 2 initialisant la socket bind 3 ouverture du service TCP listen La fonction attendre_client pour l attente d un client int attendre_client int fdServeur demarrage_serveur Ce fichier demarrage_serveur c permet au serveur de traiter les processus clients selon les diff rents contextes 1 Compilation avec processus 2 D couverte avec threads La fonction demarrer_serveur int demarrer_serveur int numero_port char fichier Cette fonction g re les points suivants 1 fonctionnemet du serveur boucle infinie 2 traiter les commandes des clients 3 traiter les signaux des processus clients fils et serveur p re La fonction demarrer_decouverte CHAPITRE 4 DESCRIPTION GLOBALE ET MAINTENANCE 21 void demarrer_decouverte void t Elle cr e un thread qui se charge de recevoir
11. d function Chapitre 2 Deuxi me tranche 2 1 Exigences et analyse des points du sujet Cette deuxi me tranche du projet aborde les points suivants Plus de transparence pour l utilisateur Gestion des fichiers de configuration facilitant les t ches du client et du serveur Un protocole de d couverte simple Les clients changent dans ce contexte des informations ne n cessitant pas un contr le de flux particulier ce qui justifie bien le fait que le sujet pro pose sa gestion en UDP 2 2 Conception 2 2 1 Plus de transparence pour l utilisateur Le premier but de cette tranche est de permettre l utilisateur d utiliser notre client de la m me facon qu un compilateur en local comme gcc Ceci sera assur par la gestion des param tre de la ligne de commande et les faire passer comme tel gcc Pour faciliter le fonctionnement de nos clients nous avons pens diff ren cier au niveau de la ligne de la commande les options propres pour notre client de ceux destin s au compilateur Ce d tail sera pr cis dans le chapitre manuel utilisation 2 2 2 Gestion des fichier de configuration L utilisation de fichiers de configuration t propos par le sujet pour fa ciliter l utilisation du compilateur Ces fichiers permettent de personnaliser le client et le serveur en modifiant les param tres g n raux architectures suppor t es serveurs disponibles port d couverte CHAPITRE 2 DEUXI ME TR
12. d utilisation de la s ma phore du fichier de communication Le principe est le suivant Le processus client verrouille avec la s maphore il entre en section critique lors de la consultation des fichiers d tat des serveurs afin de garantir la validit des informations qu il est entrain de lire Ensuite il modifie le fichier d tat du serveur choisi en ajoutant la taille de son fichier et en incr mentatnt le nombre de clients de ce serveur A ce moment il quitte la section critique en lib rant la s maphore et il envoie la commande de compilation au serveur choisi Apr s avoir effectu la compilation d localis e ou ne pas avoir pu se connecter au serveur notre client r utilise la s maphore pour r acc der au fichier du ser veur en question et le mettre jour L algorithme est le suivant Algorithme GestionDesFichiersDesServeurs Variable s maphore sem 1 cette s maphore permet de g rer les acc s conccurents aux fichiers des serveurs D but Verrouiller sem LectureFichiersDesServeurs choisirServeur 1 cet algorithme sera d taill dans la section 3 2 2 page 15 EcritureFichierDuserveur Deverrouiller sem EnvoiCommandeCompilation Verrouiller sem mettreAjourFichierServeurUtilis Deverrouiller sem 3 2 2 Algorithme de s lection de serveur Nous rappeleons que l algorithme de choix du meilleur serveur est g r lo calement pour le moment c est dire nous permettons qu aux processu
13. des informations utiles Cot serveur Au d marrage du serveur un thread est lanc pour g rer un port d couverte Celui ci doit tre d sign dans le fichier de configuration Dans le cas contraire le thread est ferm Au d marrage le thread ouvre un socket en mode non connect UDP et se met l coute sur le port d couverte La lecture d une commande client est assur par recvfrom Cette commande est ensuite pass la fonction in terpreter_decouverte impl ment e dans le module serveur_communication c qui retourne la r ponse du serveur Dans le cas o la commande re ue n est pas comprise le message Commande d couverte non support e est retourn En suite cette r ponse est envoy e l aide de sendto Les coordonn es du r cepteur sont r cup r s dans une variable de type sockaddr remplie par recvfrom la r ception 2 3 3 Cot client Le client peut tre appel la ligne de commande pour envoyer une com mande d couverte Plus de d tails dans le manuel utilisation La commande est envoy e en diffusion sur le port de d couverte indiqu dans le fichier de configuration Pour ne pas bloquer longtemps sur la commande recvfrom si aucune r ponse n est pas re u une alarme est d clench e puis d sactiv e la r ception d une r ponse 2 3 4 Tests de la deuxi me tranche makefile Apr s cette tranche notre client peut tre utilis la place de gcc dans un makefile Pour faire d
14. es tests nous l avons utilis pour compiler nos codes sources CC crd LD gcc CCFLAGS Wall LDFLAGS lsocket Insl lrt Commande d couverte Une commande d couverte peut tre lanc e de la mani re suivante client discovery compilers CHAPITRE 2 DEUXI ME TRANCHE La r ponse sera de la forme R ponse du serveur scorpion la commande compilers 0 0 0 0 1037 provides v0 11 Chapitre 3 Troisi me tranche 3 1 Exigences et analyse des points du sujet Compilation d localis e mais galement r partie Bonne gestion de la r partition des clients selon les serveurs disponibles 3 2 Conception 3 2 1 Communication des clients Avant de d tailler notre solution con ue pr cisons que nous avions pr vu que la gestion des clients doit se faire selon deux niveaux 1 les clients locaux sur une machine plusieurs clients sur tanit 2 les clients sur autres machines un client sur tanit et un autre sur big Fichier de communication des clients locaux Nos clients consultent et modifient un fichier d crivant l tat des diff r nts serveurs occup s en pr cisant chaque fois le pid du client le nom du serveur et la taille du fichier compiler Deux solutions se pr sentent 1 un seul fichier de communication d crivant tous les serveurs utilis s et la taille des fichiers manipul s 2 un fichier par serveur donnant la taille totale des fichiers manipul s par le serveur
15. et le nombre des clients en question Ces deux solutions seront plus d taill es ci dessous en pr cisant les avantages et les inconv nients de chacune dans le cadre de notre application ce qui justifiera priori notre choix final 1 Fichier unique de communication Une premi re id e est de faciliter la communication des clients locaux par 12 CHAPITRE 3 TROISI ME TRANCHE 13 un fichier unique ayant la format suivante pid_client taille_fichier TAB 3 1 champs du fichier de communication ainsi le client sera suppos faire un parcours de ce fichier et choisir ven tuellement le meilleur serveur c est dire le moins utilis mais galement manipulant la plus petite taille des fichiers compiler Le probl me d une telle solution est le cout de parcours et de mise jour du fichier car la fin de compilation du fichier le client doit chercher la ligne contenant son pid et l effacer pour lib rer ainsi le serveur en question Ainsi nous tions amen s concevoir une solution moins couteuse en uti lisant un fichier par serveur 2 Fichier par serveur Nous rappelons qu ce niveau nos solutions de fichiers d crivant l tat des serveurs sont vraiment locales c est dire pour des clients locaux Comme la solution pr c dente est co teuse une deuxi me solution est d avoir un fichier pour chaque serveur appel nomserveur log contenant une seule ligne de cette forme taille nbutilis Si un client donn es
16. imit_Serveur c Ce module contient la fonction serveur_tcp qui permet de lancer le serveur sur un port donn e et le met en attente d une connexion client demarrage_serveur c Ce module impl mente la fonction principal d marrer_serveur qui lance le serveur et boucle sur la fonction d attente attendre_client A La connexion d un client un processus fils est cr pour g rer ind pen damment la requ te client Ce module ouvre aussi une thread qui se met en coute sur le port d cou verte pour g rer les requ tes UDP d un client voir 2 2 3 serveur c C est le programme principale Il lance le serveur principal et le serveur d couverte Cot client La connexion cot client est assur par la fonction connecter du module client_communication c qui essaie de contacter un serveur sur un port donn La liste des serveurs potentiels est r cup r e du fichier de configuration voir 2 3 1 1 3 3 Pr paration de la requ te de compilation par le client Le client est appel la ligne de commande avec les diff rents param tres de compilation Le client r cup re ses param tres pour envoyer les commandes correspondantes au serveur L algorithme du choix du serveur contacter sera d taill dans le chapitre Deuxi me tranche 1 3 4 Impl mentation du protocol de communication Les commandes chang es entre un client et le serveur sont orient es lignes commen ants par des mots cl s d finis par le protoc
17. l 3638 gt Thu May 18 23 49 10 200 J ai choisi 2 hamilcar 3638 gt Thu May 18 23 49 10 200 Je cherche 1 1P de hamilcar 3638 gt Thu May 18 23 49 10 200 J ai contact hamilcar 3 4 Probl mes rencontr s 3 4 1 Gestion des s maphores Le probl me majeure rencontr est li au blocage de la s maphore suite une interruption ou un signal Si notre processus client re oit un signal il meurt sans d verrouiller la s maphore Ainsi le prochain processus client ne pourra pas l utiliser M me si nous avons pens un certain moment avoir recours aux masquage des interruptions mais cel parait un peu incoh rent avec le fait que les s maphores g re le masquage des interruptions au niveau syst me Par d faut de temps nous n avons pas r gl ce probl me Chapitre 4 Description globale et maintenance 4 1 Sch ma global des modules Serveur demarrage_serveur c init_serveur c serveur_communication c Communication communication c sem c r e y Clet client communication c r partition c FIG 4 1 Vue globale Le sch ma 4 1 pr cise l organisation des modules principaux selon les fonc tionnalit s Client Serveur ou communication Ces modules et leurs fonctions seront d taill s d avantage dans la section 4 2 suivante 19 CHAPITRE 4 DESCRIPTION GLOBALE ET MAINTENANCE 20 4 2 Description des modules Nous d taillons dans cette partie le
18. les requ tes UDP de d cou verte et d y r pondre La fonction demarrer_serveur void demarrer_serveur_decouverte Cette fonction cr e tout simplement le thread n cessaire pour la fonction pr c dente Les focntions de traitement des signaux 1 La fonction fin_serveur void fin_serveur pour traiter les signaux d arr t du serveur 2 La fonction fin_fils void fin_fils traitant les signaux des processus clients fils serveur_communication Ce fichier traite explicitement les requ tes des clients l aide de fonctions suivantes La fonction traiter_commandes_client est la fonction principale de ce mo dule utilisant les fonctions suivantes void traiter_commandes_client int fd Elle traite la commande client avec fd le descripteur de fichier sur lequel la commande du client a t r cup r e La fonction envoyer_reponse_serveur void envoyer_reponse_serveur Envoie le r sultat de la compilation sorties et fichier objet au client La fonction executer_commande_client void executer_commande_client redirige les sorties standard vers des fichiers temporaires pour stocker les messages d erreur puis ex cute la commande client La fonction interpreter int interpreter char cmd Elle interpr te les mots cl s de la commande client La fonction liberer_cmd_server void liberer_cmd_server CHAPITRE 4 DESCRIPTION GLOBALE ET MAINTENANCE 22 Lib rant la st
19. ol Le principe d interpr ta tion de ces commandes se base sur le parcourt du train de commandes arrivant CHAPITRE 1 PREMI RE TRANCHE 5 en capturant les mots s par s par un ou plus d espace et en essayant d interpr ter chacun de ces mots La difficult principale est le fait que le sens d un mot captur d pend du sens du mot pr c dent ou pour certaines commandes du sens du mot d avant Pour g rer ceci on dispose d une variable disponible tout le long de la r ception d un train de commande et dont la valeur permet de d terminer le sens de la commande suivante Cette variable peut prendre une valeurs parmi plusieurs traduisant les diff rents mot cl s define ANY O On attend n import quelle cmd define SET 1 On a recu SET define SET_ARGC 2 on a recu argc define SET_ARGV 3 on a recu argvx define FILE_N 4 On recu file et on attend le nom du fichier Exemple Sc nario le client envoie set argc 3 Initialement Last_cmd ANY On lit set Last_cmd SET on attend un nom de variable On lit argc Last_cmd SET_ARGC On attend la valeur de argc On lit 3 C est la fin de la ligne Last_cmd ANY 1 3 5 Traitement de la requ te client Le traitement de la requ te d un client par un processus serveur se fait selon les tapes suivante En parcourant le train de commandes re u le serveur remplit une structure cmd_compilation_serveur avec les
20. param tres de la requ te En recevant la commande file le serveur g n re un nouveau nom de fichier en concat nant son pid au nom du fichier re u et y enregistre le flux suivant cette commande Apr s la lecture de la totalit du flux re u la commande re ue est ex cut e tout en redirigeant les sorties standards vers des fichiers temporaires Le serveur envoie la r ponse la requ te client La valeur de retour de la compilation les sorties standards et ventuellement le fichier objet 1 3 6 Tests de la premi re tranche Exemple d une compilation d localis e Pour lancer la compilation suivante gcc c Wall test c Il suffit de lancer crd c Wall test c crd Compilation R partie et D localis e le nom de notre client CHAPITRE 1 PREMI RE TRANCHE 6 Pr compilation par le client Le client g n re le fichier test i et l envoie au serveur R ception du fichier par le serveur A la r ception le serveur renomme le fichier avant de l enregistrer et lance la commande gcc c Wall test c Les fichiers g n r s sur le serveur 8502_test i Fichier re u par le client 8502_stdout La sortie standard de la compilation 8502_stderr La sortie standard d erreurs de la compilation 8502_test o Le fichier objet g n r R ception par le client Le client re oit les sorties standards de gcc test c In function main test c 9 warning control reaches end of non voi
21. pour appr cier la mise en place de nouveaux protocoles n cessaires pour nos applications informatiques qui sont bas es sur les protocoles classiques TCP UDP Le contexte de ce projet tait riche dans la mesure o nous tions amen s trouver des algorithmes non seulement efficaces mais surtout optimaux pour des raisons techniques ou afin d am liorer nos conceptions Certains points de ce projet peuvent encore tre des points de d veloppement mais qui n ont pas te trait s par d faut de temps 28 Table des figures 4 1 Vuesplobale io DLE A ME Non Le er en 29
22. r serveur Si nbserveur 1 n 0 Alors retourner id 1 si on a un seul serveur on le s lectionne par d faut 1 ou si le premier serveur n est pas occup Pour i variantDe 1 nbserveur 1 Faire n nbutilisation id Si n 0 Alors retourner id retourne le premier disponible n ayant aucune t che faire 1 on arr te la recherche d un bon serveur Si n lt 5 Alors 1 si le serveur est utilis moins que 5 fois t recoit tailledesfichier id Si min gt t Alors min 20 t index 20 i 1 chercher le moins charg par rapport aux tailles des fichiers qu il s en occupe sinon on retourne le premier sur la liste par d faut retourner index 3 3 R alisations et tests 3 3 1 Structure des donn es Pour stocker les informations recup r es des fichiers des tats des serveurs la structure suivante est utilis e typedef struct serveurs_utilises_4 char serveurs int hashage CHAPITRE 3 TROISI ME TRANCHE 17 int taille int nbUtilisations int nbServeurs serveurs_utilises Le module etat_serveurs c offre les accesseurs permettant l utilisation de cette structure 3 3 2 Lecture des fichiers des tats des serveurs Ces fichiers sont le moyen de communication entre les processus donc ils doivent tre lus avant de lancer l algorithme de choix du serveur Les noms de serveurs sont recup r s du tableau serveurs de la structure config file traduisant le contenu du fichier de configu
23. ration Cependant on v rifie avant de prendre en compte un serveur que son tat est encore 1 plus de d tails pour le tableau etat dans le chapitre Deuxi me tranche De cette fa on la liste des serveurs enregistr s dans la structure ser veurs_utilises est un sous ensemble de la liste compl te des serveurs Pour garder l index du serveur dans le tableau de config file on garde un tableau hashage donnant cet index pour tout serveur de la structure serveurs_utilises D autre part on v rifie l existence des fichiers des tats des serveurs dans le cas contraire ceux ci sont cr s et initialis s 3 3 3 Tests de la troisi me tranche Pour pouvoir utiliser la r partition il faut configurer le makefile comme indiqu dans la partie manuel utilisation Exemple Compilation de trois fichiers avec la r partition voir le dossier test fourni On dispose de trois serveurs ouverts R sultat obtenues La lecture du fichier log du client indique que chacun des fichier a t envoy un serveur diff rent 3636 gt Thu May 18 23 49 09 200 J ai choisi O balance 3636 gt Thu May 18 23 49 09 200 Je cherche l IP de balance 3636 gt Thu May 18 23 49 09 200 J ai contact balance CHAPITRE 3 TROISI ME TRANCHE 18 3637 gt Thu May 18 23 49 09 200 J ai choisi 1 germinal 3637 gt Thu May 18 23 49 09 200 Je cherche l IP de germinal 3637 gt Thu May 18 23 49 09 200 J ai contact germina
24. rtes peuvent tre tr s int ressantes pour l uti lisateur comme ceux propos s par le sujet dans la tranche 4 pour conna tre l occupation d un serveur Ce type de commande peut tre utiliser dans l algo rithme de choix pour prendre en compte les clients d autres machines 25 Chapitre 6 Manuel d utilisation 6 1 Client 6 1 1 Fichier de configuration Le fichier de configuration pour le client est client conf il doit tre dans le m me dossier que l ex cutable 6 1 2 Utilisation Le programme client peut prendre un nombre illimit de param tre la ligne de commandes Les param tres propres notre programme sont distingu s de ceux destin s gcc par le faite qu ils sont pr c d s par et doivent toujours pr c d s les param tres de gcc Les param tres support s discovery suivie de la commande d couverte envoie une commande d couverte v suivi d un nom d architecture Indique au client d utiliser le compi lateur de cette architecture Indique au compilateur d utiliser l algorithme de r partition pour le choix du serveur A priori les principaux param tres de gcc sauf ceux induisant une redirec tion de flux peuvent tre utilis s Les param tres comme 0o de gcc sont pass s comme tel au serveur cependant celui ci ne sait pas recup rer la destination du fichier objet Le nom de celui ci est toujours le nom du fichier i re u mais avec l extension o
25. ructure cmd_server utilis Elle est appeller la fin de l en voie de la r ponse du serveur La fonction interpreter_decouverte char interpreter_decouverte char buf interpr te une commande re u sur le port d couverte 4 2 2 Client client c C est le fichier principal de traitement du client La fonction choisir_serveur_defaut int choisir_serveur_defaut Cette fonction impl mente l algorithme de choix par d faut d un ser veur a revient choisir le premier serveur dans la structure config_f de notre client La fonction init connexion int init_connexion int indexServeur Initialisant tout sinplement la connexion au serveur indiqu par son index indexServeur La fonction traiter_arguments int traiter_arguments int argc char argv Cette fonction traite les arguments de la commande de compilation client_communications c Au niveau de ce fichier nous avons les commandes directement li e la com munication avec le serveur l envoi et la r ception des r ponses qui en d coulent soit pour une d couverte soit pour une La fonction connecter int connecter char server int port Le client se connecte au serveur de nom server via le port num ro port La fonction envoyer_commande_compilation void envoyer_commande_compilation int argc char argv int fd Permettant notre client d envoyer une demande de compilation au ser veur La fonction envoyer_commande_decouver
26. s sur la m me machine de l appliquer Nous rappelons galement que chaque serveur poss de un fichier nomserveur log d crivant son tat L algorithme de s lection de serveur consid re trois para m tres CHAPITRE 3 TROISI ME TRANCHE 15 1 le nombre des clients 2 la taille des fichiers 3 le nombre des serveurs disponibles Mise en place de l algorithme Algorithme choisirServeur Variable entier nb 1 nb est le num ro du serveur aupr s du client D but Si repartitionSouhait e Alors 1 si l utilisateur souhaite une compilation r partie nb selectionnerServeur voir l algorithme suivant Sinon nb lt choisirServeurDefaut le numero du premier serveur dans le fichier de configuration non d ja utilis Si nb 1 Alors afficher Aucun serveur ne peut tre contact Si nonConnectionServeur nb Alors supprimerServeur nb choisirServeur L algorithme pr c dent de choix final du serveur est bas sur l algorithme de s lection de serveur suite la consultation des fichiers des serveurs L algorithme est le suivant CHAPITRE 3 TROISI ME TRANCHE 16 Algorithme selectionnerServeur Variable entier nbserveur n id t index 1 nbserveur est le nombre des serveurs disponibles nbserveur nbserveursdisponibles 1 retourne le nombre des serveurs disponibles 1 selon le client Si nbserveur 0 Alors retourner 1 n Onbutilisation premierserveur 1 nombre d utilisation du premie
27. t le premier utiliser ce serveur alors il cr e ce fichier local et l initalise quand la compilation est termin e ou mal d roul e le client diminue la taille selon la taille de son fichier et d cr mente le nombre de fois utilis es pour ce serveur Gestion de la coordination avec les clients non locaux Id e avoir au niveau du serveur d un tableau consultable via le protocole de d couverte Ce tableau contient le nombre de requetes selon les adresses IP 0 1 EF GH I J K L TAB 3 2 Tableau d tat aupr s du serveur Ainsi un client donn ayant d j contr l l utilisation des clients locaux ne contr le pas la case du tableau ayant sa m me adresse IP et controle les autres pour avoir une id e sur le nombre de requetes envoy es depuis autres clients Par exemple selon notre tableau si le client correspond l adresse IP A B C D alors il va consid rer que le serveur a un nombre de requ tes gale 7 Pour le moment cette solution peut tre lente mais galement pose un probl me de coordination puisque un serveur donn peut ne pas tre trop utilis par les clients locaux mais tre utilis ailleurs ainsi notre client peut croire avoir fait un bon choix de serveur mais d couvrir le contraire suite une connexion de d couvrte CHAPITRE 3 TROISI ME TRANCHE 14 Gestion du partage du fichier de communication et gestion des s ma phores Chaque processus client utilise le m me algorithme
28. te int envoyer_commande_decouverte char commande Permettant notre client d envoyer une demande de compilation au ser veur CHAPITRE 4 DESCRIPTION GLOBALE ET MAINTENANCE 23 repartition c La fonction choix_serveur int choix_serveur charx fichier R cup re le maximum des informations partir des fichiers log des serveurs et ex cute l algorithme de choix voir chapitre de la troisi me tranche et retourne l index du serveur utiliser avec fichier est le nom du fichier compiler Cette fonction fait appel la fonction suivante de s lection du serveur La fonction decider int decider Elle d cide quel serveur utilis selon les informations r cup r es partir des logs des serveurs 4 2 3 Communication Ce module concerne les fonctionnalit s globales de communication pour les clients et les serveurs communication c Communication en UDP 1 La fonction recevoir_UDP int recevoir_UDP int sc struct sockaddr_in sc_from char x dest 2 La fonction envoyer_UDP int envoyer_UDP int sc struct sockaddr_in sc_addr char buff Communication en TCP 1 La fonction recevoir_fichier int recevoir_fichier int fd int taille char dest 2 La fonction envoyer fichier int envoyer_fichier char nom int sc_fd sem c Nous avons utilis ce fichier dans la troisi me tranche pour g rer la commu nication locale des clients Ainsi ce fichier contient les primitifs d utilis
29. ts Un serveur donn peut recevoir plusieurs demandes de compilation avec un m me nom du fichier Ce qui met en relief la n cessit de signer les noms des fi chiers aupr s du serveur afin que celui ci puisse diff rencier les diff rents fichiers Rappelons que le serveur accorde un processus fils par client afin de g rer les demandes de ce dernier Le pid de ce processus fils sera galement utilis pour signer les fichiers du client localement aupr s du serveur CHAPITRE 1 PREMI RE TRANCHE 3 1 2 3 Protocol de communication Un protocol de communication entre serveur et client t propos par le sujet Ce protocole se base sur l change de messages textes avec l utilisation de plusieurs mots cl s Pour g rer ce protocole par le client et le serveur chacun dispose d un parseur permettant de parcourir un train de commandes arrivant tout en ignorant les commandes inconnues ou non compris 1 3 R alisation et tests 1 3 1 Structure des donn es Cot serveur Le protocole de communication entre client et serveur impose qu il n y a pas d interaction entre le client et le serveur Le premier envoie sa requ te sous forme d un train de commandes dont la fin est signal e par une demi fermeture de la connexion A la r ception de la requ te client le serveur utilise son parseur pour remplir une structure de donn es qui lui permettra la fin de la r ception d ex cuter la requ te typedef struct cmd_compilation
Download Pdf Manuals
Related Search
Related Contents
Parallax Serial LCD The Nikon Guide to Digital Photography with the Descarga - Zebra Technologies Corporation 307460F EM 480 Hydra-Spray Portable Electric Airless User Manual - CCTVDISCOVER system for measuring residual stresses by the hole Fiche de données de sécurité conformément au règlement (CE) n - Intellinet Copyright © All rights reserved.
Failed to retrieve file