Memory management 内核进程kswapd是如何逐步启动的?
我了解内核进程的影响和功能Memory management 内核进程kswapd是如何逐步启动的?,memory-management,linux-kernel,kernel,Memory Management,Linux Kernel,Kernel,我了解内核进程的影响和功能kswapd 作为ps-elf | grep swapd的输出,我发现kswapd是由kthread启动的。但它是如何一步一步开始的呢?与提取相关的源代码在哪里 以下是ps-elf | grep swapd的输出: $ ps -elf | head -n 1; sudo ps -elf | grep -i kswapd F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME C
kswapd
作为ps-elf | grep swapd
的输出,我发现kswapd
是由kthread
启动的。但它是如何一步一步开始的呢?与提取相关的源代码在哪里
以下是ps-elf | grep swapd
的输出:
$ ps -elf | head -n 1; sudo ps -elf | grep -i kswapd
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
1 S root 46 2 0 80 0 - 0 kswapd 11:42 ? 00:00:00 [kswapd0]
您可以看到,内核进程kthread
的PID是2:
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
1 S root 2 0 0 80 0 - 0 kthrea 6/2 00:00:00 [kthreadd]
此外,我在rootfs中找不到同名的二进制程序。详情请参阅下文:
$ cat /proc/46/cmdline
#outputs nothing
sudo find / -iname kswapd 2>/dev/null
#outputs nothing
我想我有你想要的全部或大部分答案
如果您询问如何初始化kswapd,则该文件包含
如果您询问kswapd是如何被需要更多内存的进程唤醒的,则该文件包含
您可以使用grep、printk和dump_stack()命令的组合来逐步执行之前执行的指令,aaft您不是在问程序如何“启动”kswapd,是吗?换句话说,您是在问kswapd是如何初始化的,还是在问kswapd是如何被任意程序唤醒的?您找不到可执行文件,因为它们是内核线程,内核线程只存在于内核代码本身中,没有单独的可执行文件
kthreadd
也是一个内核线程。