Dans le cas des multi-processeur, l'idée est de n'utiliser qu'un seul timer. Celui-ci sera réglé de deux manières possibles. Enfin, une fois le timer terminé, l'interruption appellera le préordonnanceur chargé d'appeler l'ordonnanceur nécessaire.
Dans le cas où chaque thread est associé à un CPU, chaque CPU possèdera une liste des threads qu'il a à exécuter. Il est donc bien légitime d'avoir un ordonnanceur par CPU.
Les CPU s'enregistreront dans une liste d'attente qui classera les CPU suivant la durée au bout de laquelle ils veulent être réveillés. Le temps d'attente du premier CPU sera utilisé pour régler le timer.
Une fois le pré-ordonnancement appelé, il va réveiller les processeurs dont le timer a expiré en émettant une interruption.
À un temps régulier, l'heure système logicielle sera mise à jour. Il peut être astucieux d'utiliser la résolution des ordonnanceurs en général pour la fréquence de rafraîchissement de l'heure système. Il est à noter que chaque appel à gettimeofday ira consulter le temps écoulé depuis la dernière interruption ne plus, pour connaître avec plus de précision l'heure actuelle..
2004-2007, Droits de copie, Tous droits réservés, Aurélien Croc (AP²C)
générée en 0,000004 seconde(s)