check_preempt_tick 抢占调度理解

1、概述

check_preempt_tick的作用是根据当前进程已经运行的时间,判断是否需要将进程thread info结构体的flag通过resched_curr设置为TIF_NEED_RESCHED。这样在执行完本次时钟中断后(即从handle irq返回后),根据需要进行重新调度。

2、对该函数的理解

此函数共有4个返回的地方,从前到后依次说明:

(1)运行超时了,设置TIF_NEED_RESCHED。

实际运行时间大于理论运行时间,即delta_exec> ideal_runtime。

(2)在(1)不成立时,实际运行时间不大于理论运行时间,但是实际运行时间小于系统最小的运行时间,不设置TIF_NEED_RESCHED。

即delta_exec < sysctl_sched_min_granularity

(3)在(1)(2)不成立时,cfs_rq中没有比当前进程vruntime更小的进程

即if (delta < 0),我认为这里写成小于等于号更合适。

(4)在(1)(2)(3)不成立时,cfs_rq 中比当前进程的vruntime更小的进程(有高优先级的进程),两个vruntime的差值如果大于当前进程的理论运行时间,设置

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值