Re: AW: L4_ThreadSwitch behaviour

Ben Leslie <[email protected]>
Newsgroups gmane.comp.micro-kernel.l4.l4ka.general
Message-ID <[email protected]>
On Tue Feb 20, 2007 at 13:49:55 +0100, Christian, Martin, OPEE45 wrote:
>>
>http://www.ertos.nicta.com.au/publications/papers/Ruocco_06.abstract.pml
>Very nice! :-)
>
>> explains a fair bit of L4 [Pistachio/N1/...] scheduling, including the
>> tricky timeslice donation. Have a look and let me know if you need
>more
>> clarifications.
>
>Is a Pagefault basically a Call() IPC like the interrupt path? Or is it
>a Send() without blocking (because the pager is waiting already)?
>a) In the former case, the Pager should get donated the timeslice.
>b) In the latter case, execution switches to the pager if prio(Pager) >
>prio(faulting thread).
>
>Well, b) doesn't make sense, since the faulting thread can't continue
>execution anyways. So I assume it is a).

Pagefaul is essentially a Call().

>Let's go back to my problem: A newly created thread get's donated a
>timeslice. It want's to execute, but creates a page fault because it's
>code is not yet mapped into it's address space. If my assumption is
>right, the Pager would get a timeslice donation from the faulting
>thread. But probably the Pager is executing only until the next timer
>tick. That's when scheduling is done and the Pager gets ousted by the
>root task. Thus, the Pager won't ever answer the page fault IPC.

That is a pretty much the current behaviour. Other models have been
explored here, such as Call() donating its whole timeslice, rather
than just lazy scheduling occurring, but these are introduce their own
set of problems.

Cheers,

Benno
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.