do_fork()是否可以免于抢占?换句话说,在有机会将新任务结构插入就绪队列之前,父进程是否可以分配新的任务结构然后被抢占?
答案 0 :(得分:3)
先发制人并不安全。
do_fork
调用copy_process
,后者又会执行初始化任务的sched_fork
。之后do_fork
调用wake_up_new_task
以便将其置于运行队列中。
这是分开的,以便能够在安排之前终止或终止进程。
sched_fork
禁用抢占,但在完成其工作后启用它,使内核可以在调用wake_up_new_task
并将其置于运行队列之前抢占。
这是基于我对2.6内核的了解。