Hello,
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
Rob
---------------------------------------------------------------- Robert Kaiser email: rkaiser@sysgo.de SYSGO AG Am Pfaffenstein 14 phone: (49) 6136 9948-762 D-55270 Klein-Winternheim / Germany fax: (49) 6136 9948-10