再哪一步加入到runqueue中的
时间: 2024-04-04 15:29:19 浏览: 53
moxee:在AngularJS应用程序中加强模块化
在 Linux 内核中,进程会被加入到运行队列中以便被 CPU 调度执行。进程加入运行队列的具体过程分为两个步骤:
1. 将进程加入到对应的运行队列中;
2. 唤醒 CPU,让其调度执行进程。
在进程 fork 时,子进程需要被加入到运行队列中才能被调度执行。具体来说,进程的运行队列是由 CFS 调度器维护的,当进程被加入到运行队列中时,CFS 调度器会根据进程的优先级和调度策略等信息进行调度。
在进程被加入到运行队列之前,需要先将其加入到对应的任务队列中。任务队列是 CFS 调度器维护的一个数据结构,用于存储所有等待被调度的进程。当一个进程被创建或唤醒时,它会被加入到任务队列中,等待被调度执行。
进程被加入到任务队列后,CFS 调度器会根据进程的优先级和调度策略等信息,将其加入到对应的运行队列中。在将进程加入到运行队列时,CFS 调度器会根据进程的优先级和调度策略等信息来进行排序,以决定下一个被调度执行的进程。一旦进程被加入到运行队列中,CFS 调度器会唤醒 CPU,以便让其进行调度执行。
因此,在进程 fork 时,子进程会在 `sched_post_fork` 函数中被加入到任务队列中,并在后续的调度过程中被加入到运行队列中。具体的加入过程会涉及到 CFS 调度器的内部实现和调度策略,具体细节可以参考 Linux 内核源代码的实现。
阅读全文