2014-11-28 5 views
1

Я новичок в Linux ядра и только пройдя через процесс загрузки ядра и нашел это очень запутанным:Kernel_thread() и thread_create(), которая фактически создает новый поток?

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

kernel_thread создает потоки ядра. Kernel_thread вызывает clone.

В Linux потоки создаются с помощью clone, и процессы создаются с помощью fork.

вызовы fork, clone и vfork в свою очередь вызывают do_fork с различным значением для clone_flags аргумент.

Смежные вопросы