Linux
核心守護程序如何自動執行?
我已經編寫了我的自定義 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
是什麼創建了這些守護程序,即使我沒有在我的自定義初始化腳本中處理這個?
它們由核心啟動;例如,
ksoftirqd
執行緒在kernel/softirq.c
.