QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1245|回复: 0

请问!请问!请问!关于调度程序中时间片的重新计算问题!谢谢!

[复制链接]
发表于 2005-5-23 14:54:02 | 显示全部楼层 |阅读模式
for_each_task(p)
{
               up = p->user;
              if (!up) {
        p->counter = (p->counter >> 1) + NICE_TO_TICKS(p->nice);
                        continue;
                        }
            if (!up->cpu_ticks)
                        continue;
                        /* never dirty a cacheline needlessly */
                          if (p->counter >> 1 != NICE_TO_TICKS(p->nice)) {
                            oldcounter = p->counter;
                            p->counter = (p->counter >>1) + NICE_TO_TICKS(p->nice);
                                    up->cpu_ticks += oldcounter;
                                    up->cpu_ticks -= p->counter;
                            if (!up->move_task)
                                   up->move_task = p;
                            if (up->cpu_ticks < 0)
                           up->cpu_ticks = 0;
                    }
            }


请问其中的 if (p->counter >> 1 != NICE_TO_TICKS(p->nice)) 这句话意义何在?

根据分析:如果每次都把p->counter除以2(p->counter >> 1),然后再加上 NICE_TO_TICKS(p->nice)的话 ,那么加上之后再除以2的p->counter的值永远不 会大于等于NICE_TO_TICKS(p->nice)啊 ,那么显然(p->counter >> 1 != NICE_TO_TICKS(p->nice))也就是肯定成立的了,难道还有其他的情况出现吗?请点解!!!谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-16 11:42 , Processed in 0.060160 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表