Dans quelles circonstances la planification des processus Linux se produit-elle ?

WBOY
Libérer: 2022-07-27 15:32:32
original
2786 Les gens l'ont consulté

Que se passe-t-il dans la planification des processus sous Linux : 1. Au moment de la transition d'état du processus, de la fin du processus, de la mise en veille du processus, le processus doit appeler des fonctions telles que "sleep()" ou "exit()" pour effectuer des transitions d'état, et ces fonctions appelleront activement la planification. Le programme effectue la planification du processus ; 2. Lorsque le "current->counter=0" du processus actuel est mis à jour par l'interruption de l'horloge. tâche longue et répétitive, la planification est directement appelée Programme ; 4. Lorsque le processus revient en mode utilisateur suite à une interruption, une exception et un appel système.

Dans quelles circonstances la planification des processus Linux se produit-elle ?

L'environnement d'exploitation de ce tutoriel : système linux7.3, ordinateur Dell G3.

Dans quelles circonstances la planification des processus Linux se produit-elle ?

Le planificateur Linux est une fonction appelée Schedule(), qui détermine s'il faut changer de processus. Ce que l'on appelle le timing de planification fait référence aux circonstances dans lesquelles le planificateur est exécuté.

La planification des processus Linux utilise le multitâche préemptif, de sorte que la suspension et l'exécution continue des processus ne nécessitent pas de coopération entre eux.

Il existe principalement les situations suivantes :

  • Le moment de la transition de l'état du processus : fin du processus, mise en veille du processus

Le processus doit appeler sleep() ou exit() et d'autres fonctions pour exécuter l'état ; transition.Ces fonctions appelleront activement le planificateur pour la planification du processus ;

  • Lorsque la tranche de temps du processus en cours est épuisée (current->counter=0) ; est mis à jour par l'interruption d'horloge, cette situation est donc la même que celle de l'opportunité 4.

Pilote de périphérique

  • Lorsqu'un pilote de périphérique effectue une tâche longue et répétitive, le planificateur est appelé directement. Dans chaque boucle répétée, le pilote vérifie la valeur de need_resched et, si nécessaire, appelle le planificateur planning() pour abandonner activement le CPU.

Lorsque le processus revient en mode utilisateur après une interruption, une exception ou un appel système

  • Comme mentionné précédemment, qu'il revienne d'une interruption, d'une exception ou d'un appel système, ret_from_sys_call() sera finalement appelé. Cette fonction vérifie l'indicateur de planification et, si nécessaire, appelle le planificateur appelant.

  • Développer les connaissances

Sous Linux, les processus ne peuvent pas s'exécuter plus longtemps que la tranche de temps qui leur est assignée. Ils utilisent le multitâche préemptif, de sorte que les processus peuvent être suspendus et poursuivis sans interrompre la collaboration entre eux. Dans un système multitâche tel que Linux, plusieurs programmes peuvent rivaliser pour utiliser la même ressource. Dans ce cas, nous pensons que les programmes qui effectuent un travail en rafale à court terme et s'arrêtent pour attendre une entrée devraient être meilleurs qu'un programme qui continue. immobiliser le processeur pour des calculs ou interroger constamment le système pour voir si une entrée est arrivée. Nous appelons les programmes qui fonctionnent bien des programmes agréables, et dans un sens, cette gentillesse peut être calculée. Le système d'exploitation détermine la priorité d'un processus en fonction de sa valeur intéressante. La valeur intéressante d'un processus est par défaut 0 et continuera de changer en fonction des performances du programme. Les programmes qui s'exécutent en continu pendant une longue période ont généralement une priorité inférieure.

Pourquoi le planificateur est-il appelé au retour d'un appel système ?

Bien sûr, c'est pour des raisons d'efficacité. Revenir d'un appel système signifie quitter l'état du noyau et revenir à l'état utilisateur, et la transition d'état prend un certain temps. Par conséquent, avant de revenir à l'état utilisateur, le système a terminé toutes les choses qui doivent être traitées dans l'état. état du noyau.

Jetons un bref coup d'œil à ce que fait le noyau lorsque chaque interruption d'horloge se produit. Tout d'abord, nous avons une compréhension générale de cette opportunité de planification la plus fréquente, puis nous discutons en détail du processus de travail spécifique du planificateur.

Lorsque chaque interruption de la minuterie se produit, trois fonctions fonctionnent ensemble pour effectuer la sélection et la commutation du processus. Il s'agit de : planning(), do_timer() et ret_form_sys_call().

schedule() : fonction de planification des processus, qui termine la sélection du processus (planification) ;

do_timer() : appelons-la la fonction d'horloge. Cette fonction est appelée dans le programme de service d'interruption d'horloge. composant principal de la fonction, la fréquence à laquelle cette fonction est appelée est la fréquence de l'interruption d'horloge, qui est de 100 fois par seconde (appelée 100 Hz ou 100 Hz) ;

Lorsqu'un appel système ou une interruption est terminé, cette fonction est appelée pour gérer certains travaux de finition, tels que le traitement du signal, les tâches principales, etc.

Apprentissage recommandé :

Tutoriel vidéo Linux

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal