Kernel_thread()和thread_create(),哪个函数实际上创建了一个新线程?

时间:2014-11-28 12:54:45

标签: linux multithreading process linux-kernel pthreads

我是linux内核的新手,刚刚经历了内核的启动过程,发现这非常令人困惑:

kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND);
numa_default_policy();
pid = kernel_thread(kthreadd, NULL, CLONE_FS | CLONE_FILES);

我看到kernel_thread()调用了do_fork(),据我所知,do_fork()创建了一个全新的进程。

那么哪个函数实际上创建了一个新线程?

1 个答案:

答案 0 :(得分:1)

kernel_thread创建内核线程。 kernel_thread调用clone

在Linux中,使用clone创建线程,并使用fork创建进程。

fork,clone和vfork调用依次调用do_fork clone_flags参数的不同值。