Maison > Article > Opération et maintenance > Quel est le mécanisme de planification des tâches de Linux
Le mécanisme de planification des tâches de Linux fait référence à la commande ou au programme spécifique exécuté par le système lors d'un certain événement ; chaque processeur aura une file d'attente pour stocker les tâches dans l'état "TASK_RUNNING", et la planification des tâches consiste à supprimer les tâches les plus prioritaires. à partir de ces files d'attente, la tâche est placée comme la prochaine tâche placée dans le processeur pour exécution.
L'environnement d'exploitation de ce tutoriel : système linux7.3, ordinateur Dell G3.
fait référence à une commande ou un programme spécifique exécuté par le système à un certain moment
Sous Linux, chaque processeur aura une file d'attente pour stocker les tâches dans l'état TASK_RUNNING, la planification des tâches Il s'agit de prendre la tâche la plus prioritaire de ces files d'attente comme prochaine tâche à placer dans le CPU pour exécution.
La planification des tâches nécessite deux processus : le changement de contexte et l'algorithme de sélection
Changement de contexte
Passer du contexte d'un processus au contexte d'un autre processus, car cela se produit très fréquemment, c'est donc généralement la clé du planificateur efficacité. La macro switch_to est appelée dans la fonction
schedule() Cette macro implémente une véritable commutation entre les processus, et son code est stocké dans include/i386/system.h.
La macro switch_to est écrite en assembly embarqué et est difficile à comprendre. La fonction
switch_to() renvoie normalement. L'adresse de retour sur la pile est la task_struct::thread::eip du nouveau processus, qui est la position continue définie lorsque le nouveau processus a été suspendu la dernière fois (la dernière fois switch_to( ) a été exécuté). Étiquette "1:" position).
Maintenant, il est transféré dans le contexte du nouveau processus à exécuter. Cela implique le réveil, la mise en veille et d'autres fonctions pour dormir et réveiller le processus.
Algorithme de sélection
La fonction Linux planning() parcourra tous les processus dans la file d'attente prête, appellera la fonction goodness() pour calculer le poids de chaque processus et sélectionnera le processus avec le plus grand poids à exécuter. Le planificateur Linux est principalement implémenté dans la fonction planning().
Étapes de planification :
Le workflow de la fonction de planification est le suivant :
(1) Nettoyer le processus en cours d'exécution
(2) Sélectionnez le prochain processus à exécuter (pick_next_task)
(3) Définissez l'environnement d'exécution du nouveau processus
(4) Changement de contexte de processus
Le planificateur Linux divise les processus en trois catégories
La planification des processus est la fonction principale du système d'exploitation.
Le planificateur n'est qu'une partie du processus de planification. La planification des processus est un processus très complexe qui nécessite la collaboration de plusieurs systèmes.
Cet article se concentre uniquement sur le planificateur. Sa tâche principale est de sélectionner le plus approprié parmi tous les processus en cours d'exécution.
En tant que système d'exploitation général, le planificateur Linux divise les processus en trois catégories :
Processus interactifs
Ce type de processus a beaucoup d'interactions homme-machine, donc le processus est constamment en veille, attendant la saisie de l'utilisateur. Une application typique est l'éditeur vi. Ce type de processus a des exigences relativement élevées en matière de temps de réponse du système, sinon les utilisateurs auront l'impression que le système est lent à répondre.
Processus par lots
Ce type de processus ne nécessite pas d'interaction homme-machine, s'exécute en arrière-plan et consomme beaucoup de ressources système. Mais peut tolérer le délai de réponse. Comme un compilateur.
Processus en temps réel
Le temps réel a les exigences les plus élevées en matière de délais de planification. Ces processus effectuent souvent des opérations très importantes et nécessitent une réponse et une exécution immédiates. Par exemple, les logiciels de lecture vidéo ou les systèmes de contrôle de vol des avions. Il est évident que de tels programmes ne peuvent pas tolérer de longs retards de programmation. Au mieux, cela affectera l'effet de projection du film et, au pire, l'avion sera détruit. Apprentissage recommandé :
Linux. tutoriel vidéo
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!