Поскольку единственный способ создать новый процесс в Linux - это системный вызов clone()
(или другие варианты, например fork()
), реальной функции для «создания новой задачи» с нуля не существует, но есть Эта функция дублирует существующую задачу, применяя необходимые изменения. Для этого используется функция copy_process()
, которая использует dup_task_struct()
для дублирования ассоциированного struct task_struct
.
Однако существует одно специальное исключение из этого правила. процесс init (первый процесс, созданный после загрузки) создается самим ядром (любой другой процесс затем создается init или каким-либо потомком init через clone()
+ execve()
). task_struct
для задачи инициализации статически определено во время компиляции ( см. Здесь ). Вы можете посмотреть этот другой ответ , если хотите узнать больше.