linux调度器(五)——进程管理与CFS

进程调度初始化         由于该过程涉及到进程的管理模块,这个模块的详细过程我们将在以后的机会介绍,所以这里,我们主要扣出与调度相关的内容。进程的创建内核入口为do_fork,首先我们简单的看一下它的主要行为:图 do_fork与CFS的交互         上图我们只是画了do_fork最普通的fork操作,及正常的启动状态,上面的三个sched_class函数调用就是
摘要由CSDN通过智能技术生成

进程调度初始化

         由于该过程涉及到进程的管理模块,这个模块的详细过程我们将在以后的机会介绍,所以这里,我们主要扣出与调度相关的内容。进程的创建内核入口为do_fork,首先我们简单的看一下它的主要行为:


图 do_fork与CFS的交互

         上图我们只是画了do_fork最普通的fork操作,及正常的启动状态,上面的三个sched_class函数调用就是我们想要的进程调度初始化。我们分别来分析:
task_fork_fair:确定新进程的vruntime值。首先更新当前进程(父进程)的执行信息(update_curr),确定新进程的起始vruntime(place_entity),如果新的进程被设置了sysctl_sched_child_runs_first,并且父进程的vruntime大于子进程的,那么就交换它们的vruntime值,并且设置父进程的TIF_NEED_RESCHED,让它在下次主调度中结束运行,让其它更低vruntime的先运行(不能保证一定是它的子进程先运行,但在它退出运行后,它的子进程一定会比它先运行),然后标准化vruntime,因为现在的子进程还没有入队。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值