Semantics of extraordinary scheduling

Robert Kaiser rob at
Tue Jul 29 10:45:15 CEST 2003


I have a question about extraordinary scheduling in L4:

The specification is unclear about if/how the thread's scheduling
priorities are involved in the game.

What is the intended behavior if -say- a high priority thread donates
its remaining timeslice to a lower-priority one. If I understand
the code correctly, what happens in existing L4 implementations is that

1. The recipient gets to execute regardless of it's priority, i.e.
   even if there are runnable threads that have a higher priority
   than the recipient, that recipient still gets the CPU.

2. If, while the recipient is running on its donated time slice,
   another, higher priority thread becomes ready (e.g. due to an
   interrupt), the recipient is preempted. So far so good, but, when that
   preempting thread blocks again, the scheduler selects the next thread
   solely according to priority, i.e. if the recipient does not have
   the highest priority, another thread will run and the recipient
   may effectively loose its donated time prematurely due to an unrelated
   event (interrupt).

My naive gut feeling suggests that either 1. or 2. are not really the
intended behavior.

Am I missing something ?

Is anybody using this mechanism at all ?

Many thanks for any insights


Robert Kaiser                         email: rkaiser at
Am Pfaffenstein 14                    phone: (49) 6136 9948-762
D-55270 Klein-Winternheim / Germany   fax:   (49) 6136 9948-10

More information about the l4-hackers mailing list