Différence entre l’ordonnancement préventif et non préventif dans les systèmes d’exploitation


L'ordonnancement du processeur (ou ordonnancement CPU) détermine les processus auxquels sont affectés et supprimés de l'UC, en fonction de modèles d'ordonnancement tels que l'ordonnancement préventif et non préventif (également connu sous le nom d'ordonnancement coopératif).

Les systèmes plus anciens pouvaient fonctionner en mode autonome simple, mais avec le besoin croissant de systèmes flexibles et réactifs, ainsi que la virtualisation, la gestion efficace du multitraitement permet de répondre rapidement à toutes les demandes de traitement des tâches.

Les unités d'ordonnancement sont souvent appelées tâches et c'est le travail de l'ordonnanceur d'exécuter et de gérer ces tâches chaque fois que c'est nécessaire; l'ordonnanceur sélectionne la tâche à supprimer et l'affecte à l'unité centrale pour le traitement, selon le modèle d'ordonnancement utilisé.

Comment le planificateur sait-il quelles tâches sont prioritaires?



Le Scheduler doit exécuter un processus de sélection équitable et efficace, en tenant compte des demandes de traitement variables et dynamiques, et en tirant le meilleur parti des cycles CPU.

Les tâches peuvent être dans deux états pendant le traitement:

  • Dans une Burst CPU où l'unité centrale effectue des calculs pour traiter la tâche (la période d'une Burst CPU varie d'une tâche à l'autre et d'un programme à l'autre).
  • Dans un Input/Output (I/O) Burst en attente de données reçues ou envoyées par le système.

  • Lorsque l'unité centrale est inactive, le planificateur lit la file d'attente Ready, et sélectionne la tâche suivante à exécuter.   Ensuite, c'est le répartiteur qui donne le contrôle de tâche sélectionné à l'unité centrale, donc il doit être rapide!

    Il existe différentes structures et paramètres personnalisés pour définir la file d'attente Ready, ainsi que plusieurs méthodes qui peuvent être utilisées pour gérer les complexités du processus d'ordonnancement.

    En général, il s'agit d'optimiser et de maximiser l'utilisation du CPU, le débit, etc.

    Le planificateur doit prendre une décision au cours de l'une des étapes suivantes:

  • Lorsque la tâche passe d'un état Running à un état Waiting (En attente pendant une demande d' E/S, par exemple).
  • Lorsque la tâche passe de Exécuter à Prêt (par exemple, répondre à une interruption).
  • Lorsque la tâche passe de En attente à Prêt (par exemple, une demande d' E/S est terminée).
  • Quand la tâche

  • Une nouvelle tâche doit être sélectionnée si l'étape 1 ou 4 a pour but d'assurer une utilisation complète du CPU, et dans les étapes 2 et 3, la tâche peut continuer à fonctionner ou si une nouvelle tâche est sélectionnée.


    Après avoir compris comment une tâche est traitée, examinons deux modèles d'ordonnancement qui traitent des interruptions CPU.

    Les deux ont des caractéristiques similaires avec les tâches, les états de tâche, les files d'attente et les priorités (statiques ou dynamiques):

    • L'ordonnancement non préventif est le moment où une tâche s'exécute jusqu'à ce qu'elle s'arrête (volontairement) ou se termine. Windows® avait un Non-Preemptive Scheduling jusqu'à Windows 3. x, après quoi il est devenu Preemptive à partir de Windows 95.
    • L'ordonnancement préventif est un cas où une tâche peut être suspendue de force par une interruption CPU, contrairement à Non-Preemptive où la tâche s'exécute jusqu'à ce qu'elle libère le contrôle de la CPU.

    Planification non préventive



    Les tâches d'un système non préventif sont exécutées jusqu'à ce qu'elles soient terminées.

    Le planificateur vérifie ensuite l'état de toutes les tâches et planifie la tâche suivante avec un état Prêt.

    Avec la planification non préventive, une fois qu'une tâche a son affectation à l'UC, elle ne peut pas être retirée, même si les tâches courtes doivent attendre que les tâches plus longues soient terminées.

    La gestion de l'ordonnancement pour toutes les tâches est " équitable " et les temps de réponse sont prévisibles, car les tâches hautement prioritaires ne peuvent pas faire grimper les tâches en attente plus bas dans la file d'attente.

    Le planificateur s'assure que chaque tâche reçoit sa part du CPU, évitant ainsi tout retard avec n'importe quelle tâche. Le "temps" alloué à la CPU peut ne pas nécessairement être égal, car cela dépend du temps que prend la tâche à accomplir.

    Ordonnancement préventif



    Ce modèle d'ordonnancement permet d'interrompre les tâches - contrairement à l'ordonnancement non préventif, qui a une approche " exécuter jusqu'à la fin ".

    Les interruptions, qui pourraient être déclenchées à partir d'appels externes, invitent le planificateur à mettre en pause une tâche en cours d'exécution pour gérer une autre tâche plus prioritaire - de sorte que le contrôle du CPU peut être préempté.

    La tâche la plus prioritaire dans un état Ready est exécutée, ce qui permet une réponse rapide aux événements en temps réel.

    Certains des inconvénients de l'ordonnancement préventif impliquent l'augmentation des frais généraux sur les ressources lorsque l'utilisation des interruptions et des problèmes peuvent se produire avec deux tâches de partage des données, comme l'une peut être interrompue lors de la mise à jour des structures de données partagées, et pourrait nuire à l'intégrité des données.

    D'autre part, il est pratique de pouvoir interrompre une tâche pour en gérer une autre qui pourrait être critique.

    De nombreuses variantes et dépendances dans différentes politiques peuvent être définies, comme l'utilisation d'une " Round Robin Policy " où chaque tâche (avec une priorité égale) s'exécute une seule fois, puis est placée à la fin de la file d'attente, pour le cycle suivant.

    D'autres politiques comprennent le premier entré, premier sorti, le plus court, le plus court, le suivant, le temps restant le plus court, etc.

    L'analyse des données historiques peut fournir des informations sur des aspects tels que la vitesse à laquelle les nouvelles tâches arrivent, le CPU et les Bursts d' E/S, etc.


    Une question ? Nous avons oublié quelque chose ? n'hésitez pas à participer aux commentaires. Nous compléterons cet article avec plaisir.

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *