gpt4 book ai didi

linux - 进程描述符是如何初始化的

转载 作者:太空宇宙 更新时间:2023-11-04 11:11:53 25 4
gpt4 key购买 nike

“task_struct”(进程描述符)的元素如何以及何时初始化。它们是否在 fork() 系统调用后自动初始化。

最佳答案

是的,一旦 fork() 系统为子进程完成,“task_struct”就会由内核初始化。

当程序调用 fork() 系统调用时,内核开始执行其内部主例程“do_fork”。您可以找到完整的源代码(fork.c) here

long do_fork(unsigned long clone_flags,
unsigned long stack_start,
struct pt_regs *regs,
unsigned long stack_size,
int __user *parent_tidptr,
int __user *child_tidptr)

在内部“do_fork”确实执行“copy_process”例程,该例程负责初始化子进程的“task_struct”。它的原型(prototype)被定义为

static struct task_struct *copy_process(unsigned long clone_flags,
unsigned long stack_start,
unsigned long stack_size,
int __user *child_tidptr,
struct pid *pid,
int trace)

它基本上复制了旧的 task_struct 并开始更新其中的各种属性。因此,一旦 fork() 系统调用完成,子进程就会有一个新的“task_sturct”,它存储有关进程的所有重要信息,内核在执行进程时会在不同时间使用这些信息。

关于linux - 进程描述符是如何初始化的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22744490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com