Stavo cercando di capire la gestione e la pianificazione dei processi di Linux. So che lo scheduler pianifica diversi processi in base alla suddivisione di priorità/tempo. Ma ci sono attività del kernel (non sto menzionando le chiamate di sistema del processo che portano il processo in modalità kernel) che devono essere elaborate anche (ad esempio:scheduler/timer o qualche codice del kernel che funziona per sempre). Non ho capito se lo scheduler pianifica la CPU per processi diversi come vengono servite le attività del kernel nel mezzo.
Risposta accettata:
Le attività del kernel che non vengono eseguite "in corso" (per soddisfare una chiamata di sistema o un interrupt) vengono gestite come processi separati e puoi vederle in ps
l'output:
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]
Questi processi sono pianificati allo stesso modo dei processi con cui hai più familiarità.
Un modello comune per tali attività sono le code di lavoro; la documentazione del kernel per quelli è abbastanza buona, ti incoraggio a leggerla se sei interessato all'argomento.