我是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()创建了一个全新的进程。
那么哪个函数实际上创建了一个新线程?
答案 0 :(得分:1)
kernel_thread
创建内核线程。 kernel_thread调用clone
。
在Linux中,使用clone
创建线程,并使用fork
创建进程。
fork,clone和vfork调用依次调用do_fork
clone_flags
参数的不同值。