
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 comparaison | Planification Préemptive | Planification non préemptive |
---|---|---|
De base | Les 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. |
Interrompre | Le 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. |
famine | Si 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érien | La 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ût | La 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.

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.

Principales différences entre les ordonnances préemptives et non préemptives
- 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 .
- 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.
- 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.
- 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.
- 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é.
- 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.