292 ARTHUR NOSEDA
sources et du temps aux sous-tˆaches sur un processeur donn´e, de telle mani`ere que certaines conditions
soient remplies. Classiquement, dans les syst`emes distribu´es, chaque processeur dispose de son propre
ordonnanceur, et un protocole de synchronisation est mis en place, pour assurer la coh´erence du syst`eme
dans son ensemble.
2.1 PARTITIONNEMENT
Il existe beaucoup d’algorithmes de partitionnement pour les syst`emes multiprocesseurs et les syst`emes
distribu´es [2] [3]. Dans la litt´erature, on trouve globalement quatre grandes classes d’algorithmes :
– algorithmes de liste,
– algorithmes de regroupement,
– algorithmes de recuit simul´e,
– algorithmes g´en´etiques.
algorithmes de liste. Chaque fois qu’il est sollicit´e, un algorithme de liste effectue deux actions :
il choisit la prochaine sous-tˆache `a ordonnancer et le processeur sur lequel celle-ci va ˆetre ex´ecut´ee.
L’algorithme pr´esent´e dans [4] est une variante de l’algorithme de liste HLFET [6], dans lequel les
priorit´es donn´ees aux tˆaches sont dynamiques dans le sens o`u, contrairement `a HLFET, les priorit´es
varient en fonction de l’´etat du syst`eme.
Algorithmes de regroupement. Ce type d’algorithme est souvent utilis´e pour minimiser l’utili-
sation des liens de communications. L’algorithme proc`ede en deux temps. Tout d’abord, une phase dite
de clustering regroupe les sous-tˆaches que l’on souhaite partitionner en modules; pour cela, l’algorithme
identifie les tˆaches qui communiquent le plus entre elles et les regroupent en clusters [8]. Ensuite, chaque
cluster est associ´e `a un processeur.
Algorithmes de recuit simul´e. Le recuit simul´e est une m´ethode d’optimisation qui part d’une
solution du probl`eme et qui tente de l’am´eliorer en explorant l’espace de recherche par voisinages. L’al-
gorithme consid`ere les solutions du probl`eme comme des ´etats d’´energie du syst`eme et le but est de mini-
miser cette ´energie. A chaque it´eration, on fait diminuer la ”temp´erature” qui repr´esente le param`etre cl´e
de l’algorithme. L’´evaluation de la nouvelle solution obtenue est sujette `a une probabilit´e d’acceptation,
de mani`ere `a ´eviter de rester pi´eg´e dans un minimum local.
Algorithmes g´en´etiques. Ce sont des algorithmes d’optimisation, au mˆeme titre que les algo-
rithmes de recuit simul´e. Leur fonctionnement sera comment´e en d´etail un peu plus loin, puisque la
solution que nous avons retenue est bas´ee sur l’un de ces algorithmes.
2.2 ORDONNANCEMENT
Il existe dans la litt´erature un grand nombre d’algorithmes d’ordonnancement diff´erents. Parmi les
ordonnanceurs de tˆaches, on trouve deux grandes cat´egories : les algorithmes bas´es sur une horloge et
les algorithmes `a priorit´es.
Quel que soit le type choisi, l’ordonnanceur d’un syst`eme temps r´eel doit toujours, en premier lieu,
s’assurer que tous les travaux se terminent sans d´epasser leur ´ech´eance (il s’agit du d´elai qui est imparti
`a chaque travail pour compl´eter son ex´ecution). Il est ´egalement possible de fixer ensuite, une politique
`a l’ordonnanceur (minimiser le temps global d’ex´ecution, le retard, les delais [10]...).
Algorithmes `a horloge. Comme leur nom peut le laisser sugg´erer, les ordonnanceurs appartenant
`a cette cat´egorie prennent la d´ecision de faire s’ex´ecuter une tˆache `a des instants pr´ecis, connus avant
mˆeme que le syst`eme ne d´ebute son fonctionnement. Dans la majorit´e des cas, les dates auxquelles
l’ordonnanceur d´ecide du comportement du syst`eme sont fix´es par un chronom`etre hardware.
Algorithmes bas´es sur la notion de priorit´e. Un ordonnanceur bas´e sur ce type d’algo-
rithmes attribue des priorit´es aux tˆaches selon une politique qui varie d’un algorithme `a l’autre. Les
priorit´es peuvent ˆetre statiques ou dynamiques et la pr´eemption des tˆaches peut ou non, ˆetre support´ee.