During the Mach In-Kernel Servers work, we explored two alternate thread models
that could be used to support traps to in-kernel servers. In the
“migrating threads” model we used, the client's thread temporarily
moves into the server's task for the duration of the call. In the
“thread switching” model, an actual server thread is dispatched to
handle client traps. Based on our experience, we find that the migrating
threads model is quite complex and difficult to implement in the context of the
current design of Mach and the Unix single server. The thread switching model
would fit more naturally and would probably be much simpler and more robust
than migrating threads, making it a valuable approach to explore in the near
future. However, we believe migrating threads inherently to be faster than
thread switching, and ultimately to be the best long term direction.