RE: A question about sceduling

From: Zhang, Yanmin
Date: Fri Sep 16 2005 - 03:55:29 EST


>>-----Original Message-----
>>From: linux-kernel-owner@xxxxxxxxxxxxxxx
>>[mailto:linux-kernel-owner@xxxxxxxxxxxxxxx] On Behalf Of Roy Lee
>>Sent: 2005年9月16日 15:16
>>To: linux-kernel@xxxxxxxxxxxxxxx
>>Subject: A question about sceduling
>>
>>I'm tracing the scheduling code of 2.6.12.
>>During the process creation, the parent process would let the child process
>>execute first to avoid the COW overhead.
>>
>>In wake_up_new_task():
>>
>> if (!(clone_flags & CLONE_VM)) {
>> /*
>> * The VM isn't cloned, so we're in a good position to
>> * do child-runs-first in anticipation of an exec. This
>> * usually avoids a lot of COW overhead.
>> */
>> if (unlikely(!current->array))
>> __activate_task(p, rq);
>> else {
>> p->prio = current->prio;
>> list_add_tail(&p->run_list, &current->run_list);
>> p->array = current->array;
>> p->array->nr_active++;
>> rq->nr_running++;
>> }
>> set_need_resched();
>>
>>It sets the flag to notify the kernel to reschedule.
>>But, the child has the same priority as it's parent and is the at the "tail"
>>of that priority queue.
list_add_tail(&p->run_list, &current->run_list) means insert the child into run list before parent (current)., not the tail of that priority queue.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/