进程调度笔记

static void update_curr(struct cfs_rq *cfs_rq){

curr->sum_exec_runtime += delta_exec; // (1) 累计当前进程的实际运行时间

schedstat_add(cfs_rq, exec_clock, delta_exec);

curr->vruntime += calc_delta_fair(delta_exec, curr); // (2) 累计当前进程的vruntime

update_min_vruntime(cfs_rq);

}



void scheduler_tick(void)
{
    if (!--p->time_slice) {     // (1) 时间片用完
        dequeue_task(p, rq->active);    // (2) 退出actice队列
        set_tsk_need_resched(p);
        p->prio = effective_prio(p);
        p->time_slice = task_timeslice(p);
        p->first_time_slice = 0;


        if (!rq->expired_timestamp)
            rq->expired_timestamp = jiffies;
        if (!TASK_INTERACTIVE(p) || EXPIRED_STARVING(rq)) {
            enqueue_task(p, rq->expired);       // (3) 普通进程进入expired队列
            if (p->static_prio < rq->best_expired_prio)
                rq->best_expired_prio = p->static_prio;
        } else
            enqueue_task(p, rq->active);    // (4) 如果是交互式进程,重新进入active队列
    }

}



2. rq->nr_running == 0, cfs_rqrt_rq下的nr_running一定是0



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值