内核守护进程如何自动运行?

内核守护进程如何自动运行?

我已经编写了自定义 init (PID 1) 脚本。在该脚本中,我刚刚安装了必要的文件系统,但如果我运行ps aux该列表,则类似于以下内容:

/ # ps aux
PID   USER     TIME  COMMAND
    1 root      0:00 /custom/init
    2 root      0:00 [kthreadd]
    3 root      0:00 [rcu_gp]
    4 root      0:00 [rcu_par_gp]
    5 root      0:00 [kworker/0:0-eve]
    6 root      0:00 [kworker/0:0H-kb]
    7 root      0:00 [kworker/u2:0-ev]
    8 root      0:00 [mm_percpu_wq]
    9 root      0:00 [ksoftirqd/0]
   10 root      0:00 [rcu_sched]
   11 root      0:00 [rcu_bh]
   12 root      0:00 [migration/0]
   13 root      0:00 [cpuhp/0]
   14 root      0:00 [kworker/0:1-eve]
   15 root      0:00 [kdevtmpfs]
   16 root      0:00 [netns]
   17 root      0:00 [kauditd]
   18 root      0:00 [kworker/u2:1-ev]
   21 root      0:00 [oom_reaper]
   22 root      0:00 [kworker/u2:2-ev]
  161 root      0:00 [writeback]
  162 root      0:00 [kcompactd0]
  164 root      0:00 [ksmd]
  165 root      0:00 [crypto]
  166 root      0:00 [kintegrityd]
  167 root      0:00 [kblockd]
  275 root      0:00 [kswapd0]
  289 root      0:00 [kworker/u3:0]
  443 root      0:00 [kthrotld]
  491 root      0:00 [iscsi_eh]
  518 root      0:00 [ipv6_addrconf]
  527 root      0:00 [kstrp]
  543 root      0:00 [ext4-rsv-conver]
  544 root      0:00 [kworker/0:1H-kb]
  546 root      0:00 /bin/ash
  547 root      0:00 ps aux

是什么创建了这些守护进程,即使我没有在自定义初始化脚本中处理这个问题?

答案1

它们由内核启动;例如,ksoftirqd线程开始于kernel/softirq.c

相关内容