【问题标题】:kernel: Can preemption occur while do_fork() is executing?内核:do_fork() 执行时会发生抢占吗?
【发布时间】:2012-01-17 10:53:37
【问题描述】:

do_fork() 可以避免被抢占吗?换句话说,父进程是否可以分配一个新的任务结构然后被抢占,然后才有机会将新的任务结构插入到就绪队列中?

【问题讨论】:

    标签: process linux-kernel kernel


    【解决方案1】:

    抢占是不安全的。

    do_fork 调用copy_process,后者又执行初始化任务的sched_fork。然后do_fork 调用wake_up_new_task 以将其放入运行队列。

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-03-05
      • 2018-09-16
      • 2014-08-25
      • 1970-01-01
      • 1970-01-01
      • 2017-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多