copy_process 在哪一步把子进程放入到了运行队列
时间: 2023-11-30 12:03:34 浏览: 90
copy_process 函数在复制进程并对新的进程进行初始化后,并没有将子进程直接放入运行队列。相反,它会将新进程加入到调度器的任务队列中,然后等待调度器将其调度执行。
具体来说,当 copy_process 函数完成进程的初始化后,它会调用 sched_process_fork 函数来完成进程的 fork 操作。sched_process_fork 函数会将新进程的状态设置为 TASK_UNINTERRUPTIBLE,然后将其加入到调度器的任务队列中,等待调度器将其调度执行。当新进程被调度执行时,调度器会将其状态设置为 TASK_RUNNING,并将其加入到对应的运行队列中,等待被 CPU 执行。
需要注意的是,调度器会为每个 CPU 分配一个独立的运行队列,并且每个运行队列都被保护在一个自旋锁中,因此当需要访问运行队列时,需要首先获取对应的自旋锁,以避免并发访问导致的问题。
阅读全文