我想知道什么是kthread
以及为什么它不占用任何内存并且没有打开的文件。我编写了一些代码,它将简单地以父子树格式打印当前正在运行的进程的 PID 以及一些附加信息,例如使用的 VMZ、RSS、线程、打开文件。 PID 2 的所有子进程命名为kthreadd
中没有 VmSize 和 VmRSS/proc/[pid]/status
文件。这/proc/[pid]/fd
不包含任何打开的文件。
这些进程是什么,它们与 init (PID 1) 生成的正常进程有何不同。我(在一本旧书中)读到,交换器将生成 init PID1,而所有其他进程都是 PID 1 的子进程。这背后肯定有一个不同的体系结构(Linux 内核 3.7.10.1-16),我不知道,所以另一个问题是为什么 PID 2 是 PID 0 的子级而不是 PID 1 的子级。
内核线程不是 init 的子线程,因为它们可以在所有用户空间进程之前启动。
它们通常用于管理硬件,这就是它们直接由内核处理并具有高优先级的原因。
对于一个进程来说,它是 init 的子进程,它需要从 init 克隆,而 Kthreads 则不然,这就是为什么它们的父进程 PID 为 0(表示“无人”)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)