Я знаю, что есть два «уровня» программ: пространство пользователя и пространство ядра.
У меня вопрос: я хочу видеть только программы ядра, или, что еще лучше, программы в пространстве ядра.
Правильный ли этот подход?
ps -ef|grep "\["
root 1 0 0 20:23 ? 00:00:00 init [4]
root 2 0 0 20:23 ? 00:00:00 [kthreadd]
root 3 2 0 20:23 ? 00:00:00 [ksoftirqd/0]
root 5 2 0 20:23 ? 00:00:00 [kworker/0:0H]
root 7 2 0 20:23 ? 00:00:06 [rcu_sched]
root 8 2 0 20:23 ? 00:00:00 [rcu_bh]
root 9 2 0 20:23 ? 00:00:00 [migration/0]
root 10 2 0 20:23 ? 00:00:00 [migration/1]
root 11 2 0 20:23 ? 00:00:00 [ksoftirqd/1]
root 13 2 0 20:23 ? 00:00:00 [kworker/1:0H]
root 14 2 0 20:23 ? 00:00:00 [migration/2]
....
linux-kernel
process
elbarna
источник
источник
Ответы:
Процессы ядра (или «потоки ядра») являются потомками PID 2 (
kthreadd
), так что это может быть более точным:Добавить,
--deselect
чтобы инвертировать выделение и видеть только процессы пользовательского пространства.(Этот вопрос был почти полностью противоположен этому .)
В 2.4. * И более старых ядрах это соглашение PID 2 еще не существовало.
источник
kthreadd
2.6.18. Если вы заинтересованы в точных деталях, перейдите на kernel.org и используйте интерфейс браузера git, чтобы углубиться в раннюю историюkernel/kthread.c
файла.Потоки ядра вообще не используют ОЗУ (или, по крайней мере, отображаются, чтобы не использовать их):
источник
Если вы
tuna
установили, вы можете перечислить все потоки ядра следующим образом:источник