Lire en anglais

Partager via


Commutateurs de contexte

Le planificateur gère une file d’attente de threads exécutables pour chaque niveau de priorité. Ces threads sont appelés threads prêts. Lorsqu’un processeur devient disponible, le système effectue un commutateur de contexte . Les étapes d’un commutateur de contexte sont les suivantes :

  1. Enregistrez le contexte du thread qui vient d’être exécuté.
  2. Placez le thread qui vient d’être exécuté à la fin de la file d’attente pour sa priorité.
  3. Recherchez la file d’attente de priorité la plus élevée qui contient des threads prêts.
  4. Supprimez le thread à la tête de la file d’attente, chargez son contexte et exécutez-le.

Les classes de threads suivantes ne sont pas prêtes.

  • Threads créés avec l’indicateur de CREATE_SUSPENDED
  • Threads arrêtés pendant l’exécution avec la fonction SuspendThread ou SwitchToThread
  • Threads en attente d’un objet de synchronisation ou d’une entrée.

Tant que les threads suspendus ou bloqués ne sont pas prêts à s’exécuter, le planificateur n’alloue pas de temps processeur à eux, quelle que soit leur priorité.

Les raisons les plus courantes d’un commutateur de contexte sont les suivantes :

  • La tranche de temps s’est écoulée.
  • Un thread avec une priorité plus élevée est prêt à s’exécuter.
  • Un thread en cours d’exécution doit attendre.

Lorsqu’un thread en cours d’exécution doit attendre, il abandonne le reste de sa tranche de temps.