Le Round-robin (ou tourniquet)[1] est un algorithme d'ordonnancement courant dans les systèmes d'exploitation adapté aux systèmes travaillant en temps partagés.
Une petite unité de temps, appelée quantum de temps, est définie. La file d'attente est gérée comme une file circulaire. L'ordonnanceur parcourt cette file et alloue un temps processeur à chacun des processus pour un intervalle de temps de l'ordre d'un quantum au maximum.
La performance de round-robin dépend fortement du choix du quantum de base.
Le système du tourniquet prend son nom du jeu de parcs pour enfants. L'image pour l'algorithme est que chaque processus est assis sur le tourniquet et, chacun à son tour, ne fait que passer devant le processeur pendant un laps de temps fini.
Formellement on a :
En reprenant l'exemple proposé dans la version anglaise de l'encyclopédie : 6 tâches avec des débuts et des durées d'exécutions différentes et un quantum de temps fixé à 1 ms, vous trouverez ci contre le diagramme de traitement d'un ordonnanceur préemptif utilisant la méthode du tourniquet. Ainsi pour un quantum de temps donné , un processus attendra au plus où est le nombre de processus en attente, pour accéder au processeur.
Quand le processeur choisit un nouveau processus à traiter et le charge, cela prend du temps. Il faut donc trouver le juste milieu entre :
En général le quantum de temps est défini en fonction du comportement statistique des processus. L'idée est de définir un quantum de temps qui fait que les processus vont à 80 % finir leur utilisation du processeur avant la fin du quantum de temps. Ainsi il n'y a que peu de perte d'efficacité.
Si le quantum est de 4 ms et qu'il faut 1 ms pour changer de processus, on perd donc = 20 % du temps en changement (exemple de quantum trop court par rapport au temps de chargement).
Si le quantum est de 4 ms et que le processus met 2 ms à s'exécuter, on perd = 50 % du temps (exemple de quantum trop long par rapport au temps d'exécution).
Un tourniquet (round-robin en anglais) est une répartition de charge (load balancing) équitable entre serveurs d'une ferme informatique (cluster). Chaque serveur traite le même nombre de requêtes. Cela nécessite une ferme de serveurs homogènes en capacité de traitement. Cette répartition de charge peut être effectuée par le serveur DNS (Domain Name System) qui associe plusieurs adresses IP à un nom de domaine. On parle alors de DNS Round Robin.