GNU/Linux >> Tutoriels Linux >  >> Linux

Linux - Comment le noyau Linux planifie-t-il le processeur, entre les processus/threads de l'espace utilisateur et les tâches/travaux du noyau ?

J'essayais de comprendre la gestion et la planification des processus Linux. Je sais que le planificateur planifie différents processus en fonction de la priorité/du découpage du temps. Mais il y a des tâches du noyau (je ne mentionne pas les appels système du processus qui font passer le processus en mode noyau) qui doivent également être traitées (par exemple:planificateur/minuteries ou du code du noyau qui s'exécute indéfiniment). Je n'ai pas compris si le planificateur planifie le processeur pour différents processus, comment les tâches du noyau sont traitées entre les deux.

Réponse acceptée :

Les tâches du noyau qui ne sont pas exécutées "en cours" (pour servir un appel système ou une interruption) sont elles-mêmes gérées comme des processus distincts, et vous pouvez les voir dans ps la sortie :

root         2  0.0  0.0      0     0 ?        S    Sep16   0:02 [kthreadd]
root         3  0.0  0.0      0     0 ?        I<   Sep16   0:00 [rcu_gp]
root         4  0.0  0.0      0     0 ?        I<   Sep16   0:00 [rcu_par_gp]
root         6  0.0  0.0      0     0 ?        I<   Sep16   0:00 [kworker/0:0H-kblockd]
root         8  0.0  0.0      0     0 ?        I<   Sep16   0:00 [mm_percpu_wq]
root         9  0.0  0.0      0     0 ?        S    Sep16   9:11 [ksoftirqd/0]
root        10  0.2  0.0      0     0 ?        I    Sep16 173:25 [rcu_sched]
root        11  0.0  0.0      0     0 ?        I    Sep16   0:00 [rcu_bh]
root        12  0.0  0.0      0     0 ?        S    Sep16   0:20 [migration/0]
root        14  0.0  0.0      0     0 ?        S    Sep16   0:00 [cpuhp/0]
root        15  0.0  0.0      0     0 ?        S    Sep16   0:00 [cpuhp/1]

Ces processus sont planifiés de la même manière que les processus que vous connaissez mieux.

Un modèle courant pour de telles tâches est les files d'attente de travail; la documentation du noyau pour ceux-ci est assez bonne, je vous encourage à la lire si le sujet vous intéresse.


Linux
  1. Comment (correctement) changer l'UID et le GID d'un utilisateur/groupe sous Linux

  2. Comment fonctionne copy_from_user du noyau Linux en interne ?

  3. Comment mmapper un tampon du noyau Linux à l'espace utilisateur?

  4. Comment un noyau monte-t-il la partition racine ?

  5. Comment Linux alloue-t-il la bande passante entre les processus ?

Quelle est la différence entre les noyaux macOS et Linux

Comment trouver les principaux processus en cours d'exécution par utilisation de la mémoire et du processeur sous Linux

Comment désactiver la connexion SSH pour l'utilisateur root sous Linux ?

Comment monter et afficher le fichier ISO en tant qu'utilisateur root et régulier sous Linux

Quelle est la différence entre l'espace utilisateur et l'espace noyau ?

Comment Linux charge-t-il l'image 'initrd' ?