Algorithme d'ordonnancement par priorité : préemptif, non préemptif

⚡ Résumé intelligent

L'ordonnancement par priorité est une méthode d'ordonnancement du processeur qui sélectionne les processus en fonction de leur priorité, en exécutant d'abord les tâches les plus prioritaires. Il peut être préemptif ou non préemptif, et les processus de priorité égale sont traités selon le principe du premier arrivé, premier servi ou par tourniquet.

  • (I.e. Définition: Les processus sont planifiés par ordre de priorité, les tâches prioritaires étant exécutées avant les tâches moins prioritaires.
  • (I.e. Numéro de priorité : Un chiffre plus bas signifie généralement une priorité plus élevée.
  • 🇧🇷 De préemption: L'arrivée d'une ressource prioritaire peut interrompre un processus de priorité inférieure en cours d'exécution.
  • ▶ ️ Non préemptif : Le processus en cours d'exécution occupe le processeur jusqu'à sa terminaison ou un changement de contexte.
  • Avantage: Les processus importants s'exécutent rapidement, leur importance relative étant proportionnelle au temps processeur.
  • ⚠️ Inconvénient: Les processus de faible priorité peuvent être mis en attente indéfiniment.

Algorithme de planification prioritaire

Qu’est-ce que la planification prioritaire ?

Planification prioritaire est une méthode de planification des processus basée sur la priorité. Dans cet algorithme, le planificateur sélectionne les tâches à exécuter selon la priorité.

Les processus avec une priorité plus élevée doivent être exécutés en premier, tandis que les tâches avec des priorités égales sont exécutées sur une base circulaire ou FCFS. La priorité dépend des besoins en mémoire, en temps, etc.

Types de planification prioritaire

La planification par priorité se divise en deux types principaux :

Planification préventive

Dans la planification préemptive, les tâches sont pour la plupart assigné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. La tâche de priorité inférieure est conservée pendant un certain temps et reprend lorsque la tâche de priorité supérieure termine son exécution.

Planification non préemptive

Dans ce type de méthode d'ordonnancement, le processeur est alloué à un processus spécifique. Ce processus libère le processeur soit en changeant de contexte, soit en se terminant. C'est la seule méthode compatible avec différentes plateformes matérielles, car elle ne nécessite pas de matériel particulier (comme un minuteur), contrairement à l'ordonnancement préemptif.

Caractéristiques de la planification prioritaire

  • Un algorithme de CPU qui planifie les processus en fonction de la priorité.
  • Il est utilisé dans Operasystèmes de mise en œuvre pour effectuer des processus par lots.
  • Si deux jobs ayant la même priorité sont PRÊTS, il fonctionne sur un PREMIER ARRIVÉ PREMIER SERVI base.
  • Dans la planification prioritaire, un numéro est attribué à chaque processus qui indique son niveau de priorité.
  • Plus le chiffre est bas, plus la priorité est élevée.
  • Dans ce type d'algorithme d'ordonnancement, si un nouveau processus arrive avec une priorité supérieure à celle du processus en cours d'exécution, alors ce dernier est préempté.

Exemple de planification prioritaire

Considérons les cinq processus suivants, de P1 à P5. Chaque processus possède sa propre priorité, sa durée d'exécution et son heure d'arrivée.

Processus Priorité Temps de rafale Heure d'arrivée
P1 1 4 0
P2 2 3 0
P3 1 7 6
P4 3 4 11
P5 2 2 12

Étape 0) À l'instant t = 0, les processus P1 et P2 arrivent. P1 est prioritaire sur P2. L'exécution commence avec le processus P1, dont la durée d'exécution est de 4.

Planification prioritaire

Étape 1) À l'instant t = 1, aucun nouveau processus n'arrive. L'exécution se poursuit avec P1.

Planification prioritaire

Étape 2) Au temps 2, aucun nouveau processus n’arrive, vous pouvez donc continuer avec P1. P2 est dans la file d'attente.

Planification prioritaire

Étape 3) À l'instant 3, aucun nouveau processus n'arrive, vous pouvez donc continuer avec P1. Le processus P2 est toujours dans la file d'attente.

Planification prioritaire

Étape 4) A l'instant 4, P1 a terminé son exécution. P2 démarre l'exécution.

Planification prioritaire

Étape 5) À l'instant t = 5, aucun nouveau processus n'arrive, nous continuons donc avec P2.

Planification prioritaire

Étape 6) À l'instant t = 6, P3 arrive. P3 a une priorité plus élevée (1) que P2, qui a une priorité (2). P2 est préempté et P3 commence son exécution.

Processus Priorité Temps de rafale Heure d'arrivée
P1 1 4 0
P2 2 1 sur 3 en attente 0
P3 1 7 6
P4 3 4 11
P5 2 2 12

Planification prioritaire

Étape 7) À l'instant 7, aucun nouveau processus n'arrive, nous continuons donc avec P3. P2 est dans la file d'attente.

Planification prioritaire

Étape 8) À l'instant t = 8, aucun nouveau processus n'arrive, nous pouvons donc continuer avec P3.

Planification prioritaire

Étape 9) À l'instant t = 9, aucun nouveau processus n'arrive, nous pouvons donc continuer avec P3.

Planification prioritaire

Étape 10) À l'intervalle de temps 10, aucun nouveau processus n'arrive, nous continuons donc avec P3.

Planification prioritaire

Étape 11) À l'instant = 11, P4 arrive avec une priorité de 4. P3 a une priorité plus élevée, il continue donc son exécution.

Processus Priorité Temps de rafale Heure d'arrivée
P1 1 4 0
P2 2 1 sur 3 en attente 0
P3 1 2 sur 7 en attente 6
P4 3 4 11
P5 2 2 12

Planification prioritaire

Étape 12) À l'instant t = 12, P5 arrive. P3 ayant une priorité plus élevée, son exécution se poursuit.

Planification prioritaire

Étape 13) À l'instant t = 13, P3 termine son exécution. P2, P4 et P5 sont dans la file d'attente des processus prêts. P2 et P5 ont la même priorité. Comme P2 arrive avant P5, son exécution commence.

Processus Priorité Temps de rafale Heure d'arrivée
P1 1 4 0
P2 2 1 sur 3 en attente 0
P3 1 7 6
P4 3 4 11
P5 2 2 12

Planification prioritaire

Étape 14) À l'instant t = 14, le processus P2 a terminé son exécution. P4 et P5 sont en attente. P5, prioritaire, démarre son exécution.

Planification prioritaire

Étape 15) À l'instant = 15, P5 poursuit son exécution.

Planification prioritaire

Étape 16) À l'instant t = 16, l'exécution de P5 est terminée. Seul le processus P4 reste en cours d'exécution.

Planification prioritaire

Étape 17) À l'instant t = 20, P4 a terminé son exécution et aucun processus ne reste.

Planification prioritaire

Étape 18) Calculons le temps d'attente moyen pour l'exemple ci-dessus.

Temps d'attente = heure de début – heure d'arrivée + temps d'attente pour la prochaine rafale

P1 = 0 - 0 = 0
P2 = 4 - 0 + 7 = 11
P3 = 6 - 6 = 0
P4 = 16 - 11 = 5
Average Waiting time = (0 + 11 + 0 + 5 + 2)/5 = 18/5 = 3.6

Avantages de la planification prioritaire

Voici les avantages de l'utilisation de la méthode de planification par priorité :

  • Méthode de planification facile à utiliser.
  • Les processus sont exécutés en fonction de leur priorité ; les processus à haute priorité n'ont donc pas à attendre longtemps, ce qui permet de gagner du temps.
  • Cette méthode offre un bon mécanisme permettant de définir précisément l'importance relative de chaque processus.
  • Convient aux applications dont les besoins en termes de temps et de ressources varient.

Inconvénients de la planification prioritaire

Voici les inconvénients de la planification par priorité :

  • Si le système finit par tomber en panne, tous les processus de faible priorité sont perdus.
  • Si les processus hautement prioritaires consomment beaucoup de temps CPU, les processus moins prioritaires risquent de mourir de faim et seront reportés pour une durée indéterminée.
  • Cet algorithme de planification peut laisser certains processus de faible priorité attendre indéfiniment.
  • Un processus sera bloqué lorsqu'il est prêt à s'exécuter mais devra attendre le processeur car un autre processus est en cours d'exécution.
  • Si un nouveau processus de priorité plus élevée continue d'arriver dans la file d'attente prête, alors le processus qui est en état d'attente devra peut-être attendre pendant une longue période.

FAQ

La famine survient lorsque des processus de faible priorité restent indéfiniment en attente, car des processus de priorité supérieure continuent d'arriver. Le vieillissement résout ce problème en augmentant progressivement la priorité des processus qui attendent depuis longtemps, afin que chaque processus finisse par s'exécuter.

Dans la plupart des systèmes d'exploitation, un numéro de priorité plus bas correspond à une priorité plus élevée. Par exemple, un processus de priorité 1 s'exécute avant un processus de priorité 3. Cependant, certains systèmes inversent cet ordre ; il est donc important de toujours vérifier la convention utilisée.

La priorité peut être attribuée en interne en fonction de facteurs tels que les besoins en mémoire, le temps d'exécution et la capacité du processeur, ou en externe par l'utilisateur ou l'administrateur selon l'importance, le coût ou les délais. Elle peut être statique (fixe) ou dynamique (évoluant en cours d'exécution).

L'IA peut attribuer et ajuster dynamiquement les priorités des processus en apprenant les modèles de charge de travail et les échéances. Cela permet aux tâches importantes de se terminer à temps tout en réduisant le risque de blocage, améliorant ainsi le débit et la réactivité globaux dans les systèmes complexes et évolutifs.

Oui. L'IA peut surveiller les temps d'attente et augmenter automatiquement la priorité des processus les plus longs, un peu comme le vieillissement intelligent. En prévoyant la congestion, elle offre un meilleur équilibre entre équité et performance que des règles fixes, évitant ainsi que les tâches peu prioritaires ne soient indéfiniment retardées.

Résumez cet article avec :