“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 199 — #209
i
i
i
i
i
i
i
i
4.2 La programmation de base avec les fils
199
end
F1 + F2
Modèle concurrent
Modèle séquentiel
l’élastique ne s’étend pas
l’élastique s’étend
F = F1 + F2
F1 = {Fib X−1}
F1 = {Fib X−1}
thread
F =
Figure 4.7 Le dataflow et les élastiques.
ordinateur personnel bon marché de l’année 2007 a typiquement au moins 512 Mo de
mémoire vive, avec laquelle on peut créer plus que 100000 fils actifs simultanément.
Si l’utilisation de la concurrence permet à votre programme d’avoir une structure
plus simple, il faudra l’utiliser sans hésitation. Mais il ne faut pas oublier que, même si
les fils sont efficaces, les programmes séquentiels le sont encore plus. Les programmes
séquentiels sont toujours plus rapides que les programmes concurrents avec la même
structure. Le programme Fib dans la section 4.2.3 sera plus rapide si l’instruction
thread est enlevée. Il ne faudra pas créer des fils si le programme n’en a pas besoin.
Mais il ne faut pas hésiter à créer un fil s’il améliore la structure du programme.
4.2.4 L’ordonnancement des fils
Nous avons vu que l’ordonnanceur doit être équitable, c’est-à-dire que tout fil prêt
s’exécutera tôt ou tard. Mais un vrai ordonnanceur doit faire bien plus que simplement
garantir l’équité. Regardons les autres problèmes qui peuvent arriver et comment un
ordonnanceur peut les résoudre.
Les tranches de temps
L’ordonnanceur met tous les fils prêts dans une file. À chaque pas, il prend le premier
fil de la file, l’exécute un certain nombre de pas, et le remet dans la file. Cette technique
s’appelle l’ordonnancement cyclique (« round-robin scheduling »). Elle garantit que
le temps du processeur est étalé équitablement parmi les fils prêts.
Il serait inefficace de permettre à chaque fil d’exécuter un seul pas d’exécution
avant de le remettre dans la file. Le surcoût pour la gestion de la file (enlever et
remettre les fils) serait élevé par rapport au calcul effectif. L’ordonnanceur permet
donc à chaque fil d’exécuter beaucoup de pas d’exécution avant de le remettre dans
la file. Chaque fil a un temps maximum qu’il est permis d’exécuter avant qu’il soit
arrêté par l’ordonnanceur. Cette durée de temps s’appelle sa tranche de temps ou
quantum. Après l’épuisement de la tranche de temps d’un fil, l’ordonnanceur arrête
© Dunod – La photocopie non autorisée est un délit
Précédent

- 214/370

Suivant