On Wed, 2008-03-19 at 21:48 +0100, [EMAIL PROTECTED] wrote:
> > Now the basic idea behind using one kernel thread to handle several
> > user threads is that when a user thread *would* block, you don't let
> > it block, instead you just take it away and run some other user
> > thread. That works very nicely in Mach, in general, because almost all
> > blocks happen inside mach_msg, and mach_msg was carefully constructed
> > to make this work nicely.
> > 
> > But there is a wrinkle: page faults.  When I say "almost all blocks
> > happen inside mach_msg" that's because one important category does
> > not: page faults.  Or rather, the page fault also blocks in a message
> > send, but the message send is one that is done by the thread in kernel
> > space, rather than by the user space mach_msg, and so the user-space
> > threads library has no access to it.
> 
> I see.
> 
> And pagefault handling can be recursive, and thus just ignoring that
> problem and letting the process block completely is not an option,
> right?

The fault may be handled by the process itself via another thread.

Thomas




Reply via email to