Почему модуль ядра 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 перечислит текущие процессы, включая процессы ядра, связанные с модулями. Это разные вещи, однако. Например, загруженный модуль ядра может иметь любое количество процессов ядра, связанных с ним (ноль или более).

Другие вопросы по тегам