On 03/05/2014 03:48 PM, Khalid Aziz wrote:
Cost is writing to a memory location since thread is using mmap, not
insignificant but hardly expensive. Thread does not need to know how
much time it has left in current timeslice. It always sets the flag to
request pre-emption immunity before entering the critical section and
clears the flag when it exits its critical section. If the thread comes
up for pre-emption while the flag is set, it gets immunity. If it does
not, flag will be cleared at the end of critical section any way.
A little more than that. The scheduler needs to set *another* flag
telling the process to yield upon leaving the critical section; if the
process doesn't, the scheduler needs to keep enough accounting to know
to penalize the process, or this method will not be usable for
unprivileged processes.