请问!请问!请问!关于调度程序中时间片的重新计算问题!谢谢!
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))也就是肯定成立的了,难道还有其他的情况出现吗?请点解!!!谢谢
页:
[1]