Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le planificateur gère des files d’attente distinctes 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 :
- Enregistrez le contexte du thread qui a été préempté ou volontairement généré par le processeur.
- Si le thread reste dans un état prêt, placez-le à la fin de la file d’attente pour son niveau de priorité.
- Recherchez la file d’attente de priorité la plus élevée qui contient des threads prêts.
- Supprimez le thread à la tête de la file d’attente, restaurez son contexte et reprenez l’exécution.
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.