Question

Dans un contexte de système d’exploitation multitâche, vous entendez parfois le terme de planification alternée. De quoi s'agit-il?
Quel autre type de planification existe-t-il?

Était-ce utile?

La solution

Ordonnancement du tournoi à la ronde

Si vous êtes un hôte dans un groupe de 100 invités, une planification à tour de rôle signifie que vous passez 1 minute (montant fixe) par invité. Vous parcourez chaque invité un par un et après 100 minutes, vous avez passé une minute avec chaque invité. En savoir plus sur Wikipedia .

Il existe de nombreux autres types d'ordonnancement, tels que l'ordre de priorité (c'est-à-dire les personnes les plus importantes en premier), le premier arrivé, premier servi, le plus tôt, le premier délai (c'est-à-dire, la personne qui quitte plus tôt, etc.). Vous pouvez commencer désactivez en recherchant des algorithmes de planification sur Google ou consultez

Autres conseils

Le timelicing est inhérent à tout système de planification à tour de rôle, selon ce que je sais,

Je ne suis pas d'accord avec InSciTek Jeff selon lequel le suivant est l'ordonnancement en tourniquet:

  

Cela signifie que chaque tâche ayant la même priorité dans la rotation circulaire peut être autorisée à s'exécuter jusqu'à atteindre une condition de blocage des ressources avant de passer à la tâche suivante de la rotation.

Je ne vois pas comment cela pourrait être considéré comme un round robin. C'est en fait une planification préventive. Cependant, il est possible d'avoir un algorithme de planification comportant des éléments de planification à la fois round-robin et préemptive, ce que fait VxWorks si la planification et la préemption à tour de rôle sont toutes deux activées (le mode de répétition à tour est désactivé par défaut). Pour activer la planification alternée, vous devez fournir une valeur non nulle dans kernelTimeSlice .

Je suis d'accord avec cette affirmation:

  

Par conséquent, bien que la planification basée sur le calage temporel implique une planification à tour de rôle, la planification à tour de rôle ne nécessite pas un découpage identique basé sur le temps.

Vous avez raison, cela ne nécessite pas un temps égal. La préemption peut gâcher ça. Et en réalité, dans VxWorks, si une tâche est préemptée lors de la planification alternée, lorsque la tâche reprend le contrôle, elle sera exécutée pendant le reste du temps alloué.

Edit dirigé vers InSciTek Jeff (je n'ai pas les privilèges de commentaire) Oui, je parlais de verrouillage des tâches / désactivation des interruptions, bien que je ne l’aie manifestement pas très bien exprimé. Tu m'as préempté (ha!) Avec ton deuxième commentaire. J'espère débattre du point le plus important, à votre avis, selon lequel une planification à tour de rôle peut exister sans découpage du temps. Ou voulez-vous simplement dire un découpage temporel égal? Je ne suis pas d'accord avec le premier, mais je suis d'accord avec le second. Je suis désireux d'apprendre. Merci.

Edit2 dirigé vers Jeff:

  

Le tournoi à la ronde peut exister sans tranches de temps. C’est exactement ce qui se passe dans VxWorks lorsque kernelTimeSlice est désactivé (zéro).

Je ne suis pas d'accord avec cette affirmation. Voir ce document . section 2.2.3 intitulée "Ordonnancement du tournoi à la ronde".

  

La planification à tour de rôle utilise le temps   tranchage pour obtenir une juste répartition des   le processeur à toutes les tâches avec le même   priorité. Chaque tâche, dans un groupe de   tâches avec la même priorité, exécute   pour un intervalle défini ou une tranche de temps.   La planification en alternance est activée par   appeler kernelTimeSlice (), qui   prend un paramètre pour une tranche de temps, ou   intervalle. [...] Si tour à tour   la planification est activée et la préemption   est activé pour la tâche en cours d'exécution, le   le gestionnaire de ticks système incrémente la   nombre de tranches de temps de la tâche.

La chronologie est inhérente à la planification à tour de rôle. Sinon, vous comptez sur une tâche pour abandonner le contrôle du processeur, ce que la planification à tour de rôle est destinée à résoudre.

Les réponses ci-dessous et même l'article de Wikipedia décrivent l'ordonnancement alternatif d'inclure de manière inhérente des tranches de temps périodiques. Bien que cela soit très courant, je pense que la planification et le calage temporel à la ronde sont pas exactement la même chose. Certes, pour que la répartition du temps ait un sens, la planification en alternance est impliquée lors de la rotation vers chaque tâche. Cependant, vous pouvez effectuer une planification en alternance sans avoir de temps. Autrement dit, chaque tâche ayant la même priorité dans la rotation alternée peut être autorisée à s'exécuter jusqu'à atteindre une condition de blocage des ressources et seulement après l'exécution de la tâche suivante dans la rotation. En d’autres termes, lorsque des tâches de priorité égale existent, les points de réordonnancement sont pas temporels.

L’idée ci-dessus est concrétisée spécifiquement dans le cas du noyau VxWorks de Wind River. Dans leur schéma de priorité, les tâches de chaque priorité sont exécutées tour à tour, mais ne se divisent pas de temps sans activer spécifiquement cette fonctionnalité dans le noyau. La raison de cette flexibilité est d’éviter le surcoût des tâches de timelicing qui sont déjà connues pour s’exécuter dans un bloc dans un délai bien défini.

Par conséquent, bien que la planification basée sur le calage temporel implique une planification à tour de rôle, la planification à tour de rôle ne nécessite pas un découpage identique basé sur le temps.

Un avis. Il semble que nous entremêlons deux mécanismes en un. En supposant uniquement l'affirmation d'origine du PO "Dans un contexte de système d'exploitation multitâche" alors

1 - Un programmateur alternatif programme toujours le prochain élément d'une file d'attente circulaire.

2 - La façon dont le planificateur reprend le contrôle pour effectuer la planification est distincte et non liée.

Je ne suis pas en désaccord avec le fait que la méthode la plus répandue pour 2 est le découpage temporel / le rendement en attente d'une ressource, mais comme il a été noté, il en existe d'autres. Si je ne me trompe pas, les premiers Mac n'utilisaient pas le découpage temporel, ils utilisaient le rendement volontaire / l'attente d'une ressource (des cellules cérébrales de plus de 20 ans peuvent parfois être fausses;).

Le tourniquet est un algorithme de planification simple dans lequel le temps est divisé de manière égale entre les tâches sans priorité.

Par exemple, si 5 processus sont en cours d'exécution, chaque processus sera autorisé à s'exécuter pendant 1/5 d'une unité de temps avant qu'un autre processus ne soit autorisé à s'exécuter. Le round robin est généralement facile à implémenter dans un système d'exploitation.

En fait, vous vous trompez avec la planification préemptive et le tournoi à la ronde. En fait, RR fait partie de la planification préemptive.

La planification du tour à tour repose sur le partage du temps, également appelé quantum (temps maximal donné par la CPU à tout processus en une fois). Il existe plusieurs processus (qui nécessitent une durée différente, c’est-à-dire un temps d’éclatement) dans une file d’attente et l’unité centrale doit les traiter tous afin qu’elle continue de basculer entre les processus pour donner à chaque processus le même temps en fonction de la valeur quantique. Ce type de planification est connu sous le nom de planification Round Robin. Regardez cette vidéo simple pour comprendre facilement la planification du tournoi à la ronde: https://www.youtube.com / watch? v = 9hw-_qJ55K4

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top