Basic Questions about Linux CPU scheduler
I am new to Linux. i was reading about CPU scheduling in general and
that of Linux Kernel 2.6 in particular. I have three main questions:
1- Assume that the upper [higher priority] queue is empty and that the
lower queue contains a thread Th2. The latter is assigned to the CPU
for a Quantum period of, say 30 ms. after 10 ms from its execution, a
new thread Th1 is admitted to the upper queue. as such Th2 is pre-
empted. Th1 is having the CPU.
At this context switch, will Th2 be switched to the expired array
queue? i guess no. Then when Th2 is assigned to the CPU again, will
its assigned quantum reset to 30 ms, or instead to 30-10.
2- i can't see the need of the expired array queue. according to what
i have read, if any thread wants to use the cpu for a longer time than
their assigned quantum, it will be stopped and put in one of the
expired priority queues.
Is there any reference which details how the new assigned priority
queue is selected?
What this expired array queue is needed?
Why not assign the stopped thread to one of the active array queues
obviously after thread priority recalculation?
By assigning a stopped thread Th to the expired queues array, we are
sure that the threads at the bottom of the actives queues will be
executed. however those threads could not be as important as Th which
has to wait until the active queues are run first before getting their
turn. probably , maintaining one array of active threads ONLY is
better? Am i missing something regarding the role of expired queues
3-is there any book / website which details the practical kernel
algorithms supported with code tracing or snippets
thank you for your time
Re: Basic Questions about Linux CPU scheduler
> I am new to Linux. i was reading about CPU scheduling in general and
> that of Linux Kernel 2.6 in particular. I have three main questions:[/color]
Your questions are not valid without specifying a specific 2.6.x version
of the kernel--the scheduler has been changing substantially in recent
versions. Also, your mention of "upper" and "lower" queues makes no sense.
If you're interested in the current scheduler, you might want to read