Planification préemptive et non préemptive
Principales différences entre la planification préemptive et non préemptive
- Dans la planification préemptive, le processeur est alloué aux processus pour une période de temps spécifique, et le processeur de planification non préemptive est alloué au processus jusqu'à ce qu'il se termine.
- Dans la planification préemptive, les tâches sont commutées en fonction de leur priorité, tandis que dans la planification non préemptive, aucune commutation n'a lieu.
- L'algorithme préemptif a la charge de faire passer le processus de l'état prêt à l'état en cours d'exécution, tandis que la planification non préemptive n'a pas une telle charge de commutation.
- La planification préemptive est flexible, tandis que la planification non préemptive est rigide.

Qu'est-ce que la planification préemptive ?
La planification préemptive est une méthode de planification dans laquelle les tâches sont principalement attribuées avec leurs priorités. Parfois, il est important d'exécuter une tâche ayant une priorité plus élevée avant une autre tâche de priorité inférieure, même si la tâche de priorité inférieure est toujours en cours d'exécution.
À ce moment-là, la tâche de priorité inférieure reste en attente pendant un certain temps et reprend lorsque la tâche de priorité supérieure termine son exécution.
Qu'est-ce que la planification non préemptive ?
Dans ce type de méthode de planification, le CPU a été alloué à un processus spécifique. Le processus qui maintient le processeur occupé libérera le processeur soit en changeant de contexte, soit en se terminant.
C'est la seule méthode qui peut être utilisée pour diverses plates-formes matérielles. En effet, il n'a pas besoin de matériel spécialisé (par exemple, une minuterie) comme la planification préemptive.
La planification non préemptive se produit lorsqu'un processus entre volontairement dans l'état d'attente ou se termine.
Planification préemptive et non préemptive : tableau de comparaison
Voici une comparaison directe entre la planification préemptive et non préemptive. Les principales différences entre la planification préemptive et non préemptive dans le système d'exploitation sont les suivantes :
| Planification préventive | Planification non préemptive |
|---|---|
| Un processeur peut être préempté pour exécuter les différents processus au milieu de toute exécution de processus en cours. | Une fois que le processeur commence son exécution, il doit la terminer avant d'exécuter l'autre. On ne peut pas faire de pause au milieu. |
| L'utilisation du processeur est plus efficace que la planification non préemptive. | L'utilisation du processeur est moins efficace que la planification préemptive. |
| Le temps d'attente et de réponse de la planification préemptive est moindre. | Les temps d'attente et de réponse de la méthode de planification non préemptive sont plus longs. |
| La planification préemptive est prioritaire. Le processus ayant la priorité la plus élevée est un processus actuellement utilisé. | Lorsqu'un processus entre dans l'état d'exécution, l'état de ce processus n'est jamais supprimé du planificateur tant qu'il n'a pas terminé son travail. |
| La planification préemptive est flexible. | La planification non préemptive est rigide. |
| Exemples : – Temps restant le plus court en premier, Round Robin, etc. | Exemples : Premier arrivé premier servi, Travail le plus court en premier, Planification prioritaire, etc. |
| L'algorithme de planification préemptive peut être préempté, c'est-à-dire que le processus peut être planifié | Dans le processus de planification non préemptif, il ne peut pas être planifié |
| Dans ce processus, le CPU est alloué aux processus pour une période de temps spécifique. | Dans ce processus, le processeur est alloué au processus jusqu'à ce qu'il se termine ou passe à l'état d'attente. |
| L'algorithme préemptif a pour conséquence de faire passer le processus de l'état prêt à l'état en cours d'exécution et vice versa. | La planification non préemptive n'entraîne pas de surcharge liée au passage du processus de l'exécution à l'état prêt. |
Avantages de la planification préemptive
Voici les avantages/avantages de la méthode de planification préemptive :
- La méthode de planification préemptive est plus robuste, approche telle qu'un seul processus ne peut pas monopoliser le processeur
- Choix de la tâche en cours reconsidéré après chaque interruption.
- Chaque événement provoque une interruption des tâches en cours
- Le système d'exploitation s'assure que l'utilisation du processeur est la même pour tous les processus en cours d'exécution.
- En cela, l'utilisation du CPU est la même, c'est-à-dire que tous les processus en cours utiliseront le CPU de la même manière.
- Cette méthode de planification improvise également le temps de réponse moyen.
- La planification préemptive est bénéfique lorsque nous l'utilisons pour l'environnement multi-programmation.
Avantages de la planification non préemptive
Voici les avantages/avantages de la méthode de planification non préemptive :
- Offre de faibles frais de planification
- A tendance à offrir un débit élevé
- C'est une méthode conceptuellement très simple
- Less ressources de calcul nécessaires pour la planification
Inconvénients de la planification préemptive
Voici les inconvénients de la planification préemptive :
- Besoin de ressources de calcul limitées pour la planification
- Le planificateur met plus de temps à suspendre la tâche en cours, à changer de contexte et à distribuer la nouvelle tâche entrante.
- Le processus ayant une faible priorité doit attendre plus longtemps si certains processus hautement prioritaires arrivent en continu.
Inconvénients de la planification non préemptive
Voici les inconvénients/inconvénients de la méthode de planification non préemptive :
- Cela peut conduire à la famine, en particulier pour les tâches en temps réel.
- Les bugs peuvent bloquer une machine
- Il peut faire en temps réel et Planification prioritaire difficile
- Mauvais temps de réponse pour les processus
Exemple de planification non préemptive
Dans la planification SJF non préemptive, une fois le cycle CPU alloué au processus, le processus le conserve jusqu'à ce qu'il atteigne un état d'attente ou se termine.
Considérez les cinq processus suivants, chacun ayant sa propre heure de rafale et son heure d'arrivée.
| File d'attente de processus | Temps de rafale | Heure d'arrivée |
|---|---|---|
| P1 | 6 | 2 |
| P2 | 2 | 5 |
| P3 | 8 | 1 |
| P4 | 3 | 0 |
| P5 | 4 | 4 |
Étape 0) Au temps = 0, P4 arrive et démarre l'exécution.
Étape 1) Au temps = 1, le processus P3 arrive. Mais P4 a encore besoin de 2 unités d’exécution pour être complété. L'exécution se poursuivra.
Étape 2) Au temps =2, le processus P1 arrive et est ajouté à la file d'attente. P4 poursuivra son exécution.
Étape 3) Au temps = 3, le processus P4 terminera son exécution. Le temps de rafale de P3 et P1 est comparé. Le processus P1 est exécuté car son temps de rafale est inférieur à celui de P3.
Étape 4) Au temps = 4, le processus P5 arrive et est ajouté à la file d'attente. P1 poursuivra l'exécution.
Étape 5) Au temps = 5, le processus P2 arrive et est ajouté à la file d'attente. P1 poursuivra l'exécution.
Étape 6) Au temps = 9, le processus P1 terminera son exécution. Le temps de rafale de P3, P5 et P2 est comparé. Le processus P2 est exécuté car son temps de rafale est le plus faible.
Étape 7) Au temps = 10, P2 est en cours d'exécution et P3 et P5 sont dans la file d'attente.
Étape 8) Au temps = 11, le processus P2 terminera son exécution. Le temps de rafale de P3 et P5 est comparé. Le processus P5 est exécuté car son temps de rafale est inférieur.
Étape 9) Au temps = 15, le processus P5 terminera son exécution.
Étape 10) Au temps = 23, le processus P3 terminera son exécution.
Étape 11) Calculons le temps d'attente moyen pour l'exemple ci-dessus.
Wait time P4= 0-0=0 P1= 3-2=1 P2= 9-5=4 P5= 11-4=7 P3= 15-1=14 Average Waiting Time= 0+1+4+7+14/5 = 26/5 = 5.2
Exemple de planification préventive
Considérez ceci en suivant trois processus dans Tournoi à la ronde
| File d'attente de processus | Temps de rafale |
|---|---|
| P1 | 4 |
| P2 | 3 |
| P3 | 5 |
Étape 1) L'exécution commence par le processus P1, qui a un temps de rafale de 4. Ici, chaque processus s'exécute pendant 2 secondes. P2 et P3 sont toujours dans la file d'attente.
Étape 2) Au temps =2, P1 est ajouté à la fin de la file d'attente et P2 commence à s'exécuter
Étape 3) À time=4 , P2 est préempté et ajouté à la fin de la file d'attente. P3 commence à s'exécuter.
Étape 4) À time=6 , P3 est préempté et ajouté à la fin de la file d'attente. P1 commence à s'exécuter.
Étape 5) À time=8 , P1 a un temps de rafale de 4. Son exécution est terminée. P2 commence l'exécution
Étape 6) P2 a un temps de rafale de 3. Il s'est déjà exécuté pendant 2 intervalles. Au temps = 9, P2 termine l'exécution. Ensuite, P3 commence l’exécution jusqu’à la fin.
Étape 7) Calculons le temps d'attente moyen pour l'exemple ci-dessus.
Wait time P1= 0+ 4= 4 P2= 2+4= 6 P3= 4+3= 7


















