linux进程调度周期,linxu调度周期,linxu进程调度周期,linux周期调度过程 - 神农笔记...

周期性调度过程我们从 在timer.c中开始分析

void update_process_times(int user_tick)

{

struct task_struct *p = current;

/* Note: this timer irq context must be accounted for as well. */

account_process_tick(p, user_tick);

run_local_timers();

rcu_check_callbacks(user_tick);

scheduler_tick();

run_posix_cpu_timers(p);

}

timer定时器每次都会调用 scheduler_tick();

void scheduler_tick(void)

{

int cpu = smp_processor_id();

struct rq *rq = cpu_rq(cpu);

struct task_struct *curr = rq->curr;

sched_clock_tick();

raw_spin_lock(&rq->lock);

update_rq_clock(rq);

curr->sched_class->task_tick(rq, curr, 0);

update_cpu_load_active(rq);

calc_global_load_tick(rq);

sched_freq_tick(cpu);

raw_spin_unlock(&rq->lock);

perf_event_task_tick();

rq_last_tick_reset(rq);

}

然后在 scheduler_tick(); 中会调度不同的任务。就是这么简单

而调用update_process_times 的情况大致流程如下图。

c052ac27698856af9aebcf4ee75f5172.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值