![]() ![]() ![]() ![]() ![]() |
Projet de fin d'année Logiciel
< Description du logiciel < > Autres logiciels > |
L'algorithme de construction suppose que le réseau dont on veut déterminer la topologie ne comporte pas de boucle. Pour cela, il effectue si nécessaire une scission des équipements responsables du problème.
Vient ensuite la construction de l'arbre représentant le réseau à
partir des informations obtenues. Il s'agit de déterminer les liaisons
directes entre équipements, du type nud1-port1 vers n
ud2-port2. Les liaisons entre équipements ne sont normalement
pas orientées et le sont juste pendant la construction de l'arbre pour
les besoins de l'algorithme.
Dans un premier temps, seuls les nuds internes de l'arbre sont
pris en compte pour la construction, puis les équipements de type
station qui sont les feuilles de l'arbre sont finalement placées. Ceci
permet de réduire, souvent de manière significative, le nombre
d'équipements lors de la construction de l'arbre.
L'algorithme commence pqr positionner tous les équipements dans l'état non testé. Puis une racine est choisie pour l'arbre: il s'agit de la machine depuis laquelle est lancé le programme. C'est depuis cette racine qu'est ensuite lancée la construction.
D'un point de vue global, l'algorithme de construction place des
équipements dans l'arbre puis s'appelle récursivement sur les fils
directs du nud sur lequel il vient d'être appelé, après
modification de l'arbre due aux traitements effectués.
Plus précisément, il est appelé sur un équipement donné que l'on nomme N, et procède par étapes:
La routine host_place_son prend en paramètre un nud N et
un autre n
ud F et se charge de placer ce dernier dans
l'arborescence enracinée en N.
Ici, on positionne un marqueur permettant de s'assurer que
l'on ne rencontre pas deux nuds F
qui sont plus
proches de N que F: ceci est bien sûr impossible, car cela
signifierait que F a deux pères alors que l'on s'est assuré
d'avoir un arbre et non un graphe. Si malgré tout, on se
retrouve dans ce cas avec le marqueur positionné, on
n'effectue alors aucun traitement.
En ce qui concerne le positionnement relatif de deux fils d'un même
nud, la fonction more_direct_son regarde sur quels ports
chaque fils voit son père et l'autre fils. Si pour l'un deux les ports
sont différents, alors cet équipements se trouve entre les deux autres
dans l'arbre.
Une fois l'ossature de l'arbre réalisée, on récupère l'ensemble des
nuds internes de l'arbre, et on place les feuilles de chacun
d'eux grâce à la fonction host_place_all_leaf.
Cette fonction prend pour seul paramètre le nud N pour lequel
elle doit placer les feuilles.
![]() ![]() ![]() ![]() ![]() |
Projet de fin d'année Logiciel
< Description du logiciel < > Autres logiciels > |