I thought about this some more and need to correct my original
response. It is possible for another task to run after the start
of a new epoch. This could come about due to the fact that the
runqueue lock is dropped during the 'recalculate' operation. More
important to note is that during recalculate a window is open
where interrupts are enabled. If a timer interrupt is serviced
in this window AFTER the counter value for the currently running
task has been adjusted, then the timer interrupt code will decrement
the counter value of the currently running task by 1. In this
case the currently running task will have a lower goodness value
than other tasks that share the same memory map. Therefore, some
other task with the same memory map would be chosen to run next.
In addition, when the runqueue lock is dropped during recalculate
tasks can be added to the runqueue which could have higher goodness
values (but the same priority) as the currently running task.
However, I'm not sure if these cases are within the constraints of
your original question.
My amended answer is most likely yes: possible no. :)
-- Mike Kravetz kravetz@us.ibm.com IBM Linux Technology Center (we're not at Sequent anymore) - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/