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