Если вы загрузите и распакуете его (linux-3.13) из kernel.org, вы увидите, что в linux-3.13 / kernel / fork.c есть хорошо документированный набор функций. Один из них, do_fork (...), претендует на фактическую форк. Здесь эта функция вызывает 'static struct task_struct * copy_process (...)' вокруг строки 1129. То, что вы ищете, должно быть где-то рядом.
ОК, как я вижу, эта функция после проверки прав доступа selinux вызывает dup_task_struct (...), который вызывает alloc_task_struct_node (...), alloc_thread_info_node (...) и arch_dup_task_struct (...) ', Учитывая тот факт, что alloc_task_struct_node (...) делает «немного больше, чем вызов kmem_cache_alloc_node (...)» и тот факт, что эта функция объявлена в файле linux-3.13 / mm / slab.c, который намекает на память управление и тот факт, что многие потоки ядра могут работать против обязанностей по управлению памятью (непрерывно создавая и удаляя структуры), я бы поспорил, что Linux, в частности, не создает структуры данных процесса один за другим, поскольку многие потоки выполняют те же общие распределения, которые использует fork .
Если вы откроете linux-3.13 / mm / slub.c, он начнет говорить, что это распределитель памяти slab. Поисковая система Интернета дает эти результаты этому: википедия ... и lwn .