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.