Commutateurs de contexte
Le planificateur gère une file d’attente de threads exécutables pour chaque niveau de priorité. Il s’agit de Threads prêts à l’emploi. Lorsqu’un processeur devient disponible, le système effectue un changement de contexte. Les étapes d’un changement de contexte sont les suivantes :
- Enregistrez le contexte du thread dont l’exécution vient d’être terminée.
- Placez le thread qui vient d’être exécuté à la fin de la file d’attente pour sa priorité.
- Recherche la file d’attente dont la priorité est la plus élevée et qui contient des threads prêts.
- Supprimez le thread situé à l’en-tête de la file d’attente, chargez son contexte et exécutez-le.
Les classes de threads suivantes ne sont pas des threads prêts.
- Threads créés avec l' _ indicateur de création suspendu
- Threads interrompus pendant l’exécution avec la fonction SuspendThread ou SwitchToThread
- Threads en attente d’un objet ou d’une entrée de synchronisation.
Tant que les threads suspendus ou bloqués ne sont pas prêts à être exécutés, le planificateur n’alloue pas de temps processeur à eux, quelle que soit leur priorité.
Les raisons les plus courantes d’un changement de contexte sont les suivantes :
- La tranche de temps s’est écoulée.
- Un thread avec une priorité plus élevée est prêt à être exécuté.
- Un thread en cours d’exécution doit attendre.
Quand un thread en cours d’exécution doit attendre, il abandonne le reste de sa tranche de temps.