Linux 内核线程--”;kthreadd";

Linux 内核线程--”;kthreadd";,linux,kernel,Linux,Kernel,众所周知,kthread是一个内核线程,用于帮助其他人创建新的内核线程(查看kthread\u create\u list以查看是否需要创建任何新的内核线程) 但是我不明白为什么我们不使用create_kthread来创建一个新的内核线程? 我看不出kthread有什么不同 你能给我一些建议吗 谢谢你的大力帮助。不太感谢。 kthreadd是一个在内核空间中运行的守护进程线程。 原因是内核有时需要创建线程,但在内核中创建线程非常棘手。因此,kthreadd是一个线程,如果需要,内核可以使用它来生

众所周知,kthread是一个内核线程,用于帮助其他人创建新的内核线程(查看
kthread\u create\u list
以查看是否需要创建任何新的内核线程)

但是我不明白为什么我们不使用
create_kthread
来创建一个新的内核线程? 我看不出kthread有什么不同

你能给我一些建议吗

谢谢你的大力帮助。

不太感谢。 kthreadd是一个在内核空间中运行的守护进程线程。
原因是内核有时需要创建线程,但在内核中创建线程非常棘手。因此,kthreadd是一个线程,如果需要,内核可以使用它来生成新的线程。这个线程也可以访问用户空间地址空间,但不应该这样做。它是由内核管理的,因此不必担心。

我的猜测(因此不将其作为答案)是,由于线程创建可能是一个漫长的过程,内核只是将线程创建请求排队等待
kthread
以“稍后”处理这样内核本身就可以转移到其他方面,从而降低总体延迟并提高性能。我的观点是:要在内核中创建新线程,需要修改许多共享对象资源。普通内核线程也可以直接调用kernel_thread函数来创建线程,但是,这可能会导致许多写入程序访问全局共享资源,从而在重载时降低创建性能。