Почему модуль ядра cfg80211 также указан как процесс ядра [cfg80211]?
Я не понимаю, почему модуль ядра cfg80211
также указан ps aux
как показано ниже:
$ ps aux | grep cfg80211
root 521 0.0 0.0 0 0 ? S< 16:09 0:00 [cfg80211]
1 ответ
Это стандартное поведение ps
перечислить потоки ядра, поскольку они тоже являются процессами - просто процесс другого типа, потому что они работают в режиме супервизора (который некоторые люди называют "режимом ядра").
Если вы бежите ps ax
(или же ps aux
), не передавая свой вывод в grep
сначала вы увидите целую кучу модулей ядра (а затем, возможно, некоторые другие, перемежающиеся с пользовательскими процессами, если они были запущены позже).
Например, вот первые 10 строк текущего выхода ps ax
в моей системе:
PID TTY STAT TIME COMMAND
1 ? Ss 0:03 /sbin/init
2 ? S 0:01 [kthreadd]
3 ? S 97:17 [ksoftirqd/0]
6 ? S 0:00 [migration/0]
7 ? S 0:24 [watchdog/0]
8 ? S 0:00 [migration/1]
10 ? S 6:06 [ksoftirqd/1]
12 ? S 0:18 [watchdog/1]
13 ? S< 0:00 [cpuset]
lsmod
отобразит список загруженных модулей. ps aux
перечислит текущие процессы, включая процессы ядра, связанные с модулями. Это разные вещи, однако. Например, загруженный модуль ядра может иметь любое количество процессов ядра, связанных с ним (ноль или более).