Recommandé, 2019

Choix De L'Éditeur

Différence entre la planification préemptive et non préemptive dans un système d'exploitation

Le programmateur de la CPU est responsable d'attribuer un processus à la CPU lorsque celle-ci est à l'état inactif. Le planificateur de la CPU sélectionne un processus dans la file d'attente et alloue le processus à la CPU. La planification qui a lieu lorsqu'un processus passe de l'état en cours à l'état prêt ou de l'état en attente à l'état prêt est appelée planification préemptive . Sur le plan manuel, la planification qui a lieu lorsqu'un processus se termine ou passe de l'exécution à l'attente de ce type de planification du processeur est appelée planification non préemptive . La différence fondamentale entre la planification préemptive et non préemptive réside dans leur nom même. C'est un calendrier préemptif peut être préempté; les processus peuvent être planifiés. Dans la planification non préemptive, les processus ne peuvent pas être planifiés.

Discutons brièvement des différences entre les calendriers préemptif et non préemptif à l'aide du tableau comparatif présenté ci-dessous.

Tableau de comparaison

Base de comparaisonPlanification PréemptivePlanification non préemptive
De baseLes ressources sont allouées à un processus pour une durée limitée.Une fois que les ressources sont allouées à un processus, le processus le maintient jusqu'à ce qu'il ait terminé son temps de traitement en rafale ou qu'il passe à l'état d'attente.
InterrompreLe processus peut être interrompu entre les deux.Le processus ne peut pas être interrompu jusqu'à ce qu'il se termine ou qu'il passe à l'état d'attente.
famineSi un processus de haute priorité arrive fréquemment dans la file d'attente, un processus de faible priorité peut disparaître.Si un processus avec un temps de rafale long est en cours d'exécution du processeur, alors un autre processus avec un temps de rafale plus court du processeur peut mourir.
AérienLa planification préemptive entraîne des frais généraux liés à la planification des processus.L'ordonnancement non préemptif n'a pas de frais généraux.
La flexibilitéLa planification préventive est flexible.La planification non préemptive est rigide.
CoûtLa planification préemptive est liée aux coûts.L'ordonnancement non préemptif n'est pas associatif.

Définition de la planification préemptive

La planification préemptive est celle qui peut être effectuée dans les circonstances où un processus passe de l'état en cours d' exécution à l'état prêt ou de l' état en attente à l' état prêt . Ici, les ressources (cycles de la CPU) sont allouées au processus pour une durée limitée, puis sont retirées et le processus est replacé dans la file d'attente disponible s'il lui reste encore du temps de rafale de la CPU. Le processus reste dans la file d'attente jusqu'à la prochaine opportunité d'exécution.

Si un processus de haute priorité arrive dans la file d'attente, il n'est pas nécessaire d'attendre que le processus en cours se termine. Au lieu de cela, le processus en cours est interrompu au milieu de l'exécution et est placé dans la file d'attente des éléments prêts jusqu'à ce que le processus hautement prioritaire utilise les cycles du processeur. De cette manière, chaque processus de la file d'attente prête dispose d'un peu de temps pour exécuter le processeur. Cela rend l'ordonnancement préemptif flexible, mais augmente les frais généraux liés au passage du processus de l'état en cours à l'état prêt et au contraire.

Les algorithmes qui fonctionnent sur la planification préventive sont Round Robin. La planification de priorité la plus courte en premier (SJF) et prioritaire peut ou non entrer dans la planification préemptive.

Prenons un exemple de planification préemptive, regardez dans l'image ci-dessous. Nous avons quatre processus P0, P1, P2 et P3. P2 arrive à l'instant 0. La CPU est donc affectée au processus P2 car il n'y a pas d'autre processus dans la file d'attente. Pendant ce temps, P2 s’exécutait, P3 arrive à l’heure 1, le temps restant pour le processus P2 (5 millisecondes) est supérieur au temps requis par P3 (4 millisecondes). Donc, la CPU est allouée au processeur P3.

Pendant ce temps, P3 était en cours d'exécution, le processus P1 arrive à l'heure 2. Le temps restant pour P3 (3 millisecondes) est inférieur au temps requis par les processus P1 (4 millisecondes) et P2 (5 millisecondes). Donc, P3 est autorisé à continuer. Pendant que le processus P3 se poursuit, le processus P0 arrive à l'heure 3, le temps restant pour P3 (2 millisecondes) est égal au temps requis par P0 (2 millisecondes). Donc, P3 continue et après la fin de P3, la CPU est allouée à P0 car elle a moins de temps de rafale que les autres. Après la fin de P0, la CPU est affectée à P1 puis à P2.

Définition de planification non préemptive

La planification non préemptive est une planification qui peut être appliquée dans les circonstances où un processus se termine ou lorsqu'un processus passe de l' état en attente à l' exécution . Dans la planification non préemptive, une fois que les ressources (CPU) sont allouées à un processus, le processus le maintient jusqu'à ce qu'il soit terminé ou qu'il atteigne un état d'attente.

Contrairement à la planification préemptive, la planification non préemptive n'interrompt pas un processus exécutant l'UC au milieu de l'exécution. Au lieu de cela, il attend que le processus achève le temps de traitement en rafale de son processeur, puis peut l'affecter à un autre processus.

Dans la planification non préemptive, si un processus avec une longue durée d'exécution de la CPU s'exécute, l'autre processus devra attendre longtemps, ce qui augmentera la durée moyenne d'attente des processus de la file d'attente. Cependant, l'ordonnancement non préemptif ne nécessite aucun basculement des processus de la file d'attente prête vers le processeur, mais il le rend rigide car le processus en cours d'exécution n'est même pas préempté pour un processus ayant une priorité plus élevée.

Laissez-nous résoudre l'exemple de planification ci-dessus de manière non préemptive. Comme le processus P2 arrive initialement à l'heure 0, la CPU est allouée au processus P2 et son exécution prend 6 millisecondes. Entre tous les processus, à savoir P0, P1, P3 arrive dans la file d'attente. Mais tous attendent que le processus P2 termine le temps de traitement en rafale de son processeur. Ensuite, le processus qui arrive après P2, c’est-à-dire que P3 se voit allouer le CPU jusqu’à ce qu’il ait terminé son temps de rafale. De même, P1 s'exécute et la CPU est ensuite chargée de traiter P0.

Principales différences entre les ordonnances préemptives et non préemptives

  1. La différence fondamentale entre la planification préemptive et non préemptive réside dans le fait que, dans la planification préemptive, la CPU est allouée aux processus pour une durée limitée . Lors de la planification non préemptive, la CPU est allouée au processus jusqu'à ce qu'elle se termine ou passe à l' état d'attente .
  2. Le processus d'exécution de la planification préemptive est interrompu en cours d'exécution, tandis que le processus d'exécution de la planification non préemptive n'est pas interrompu en cours d'exécution.
  3. La planification préemptive a pour corollaire le temps nécessaire pour faire passer le processus de l'état prêt à l'état en cours d'exécution, et inversement, et pour maintenir la file d'attente prête. D'un autre côté, la planification non préemptive n'entraîne pas la surcharge du processus de passer de l'état en cours à l'état prêt.
  4. Dans la planification préventive, si un processus avec une priorité élevée arrive fréquemment dans la file d'attente Ready, le processus avec une priorité faible doit attendre longtemps et il peut être amené à mourir de faim. D'autre part, dans la planification non préemptive, si la CPU est allouée au processus avec un temps de rafale plus long, les processus avec un temps de rafale court peuvent devoir mourir de faim.
  5. La planification préemptive est assez flexible car les processus critiques sont autorisés à accéder à la CPU dès leur arrivée dans la file d'attente prête, quel que soit le processus en cours d'exécution. La planification non préemptive est rigide, car même si un processus critique entre dans la file d'attente, le processus en cours d'exécution de la CPU n'est pas perturbé.
  6. L'ordonnancement préemptif est associatif, car il doit préserver l'intégrité des données partagées, ce qui n'est pas le cas avec un ordonnancement non préemptif.

Conclusion:

Ce n'est pas que la planification préemptive soit meilleure que la planification non préemptive ou le contraire. Tout dépend de la manière dont une planification minimise le temps d'attente moyen des processus et optimise l'utilisation de la CPU.

Top