kernel:do_fork()执行时是否可以抢占?

时间:2011-12-10 15:16:06

标签: process linux-kernel kernel

do_fork()是否可以免于抢占?换句话说,在有机会将新任务结构插入就绪队列之前,父进程是否可以分配新的任务结构然后被抢占?

1 个答案:

答案 0 :(得分:3)

先发制人并不安全。

do_fork调用copy_process,后者又会执行初始化任务的sched_fork。之后do_fork调用wake_up_new_task以便将其置于运行队列中。

这是分开的,以便能够在安排之前终止或终止进程。

sched_fork禁用抢占,但在完成其工作后启用它,使内核可以在调用wake_up_new_task并将其置于运行队列之前抢占。

这是基于我对2.6内核的了解。