Evolving Mach 3.0 to a Migrating Thread Model
Bryan Ford, Jay Lepreau
Department of Computer Science
University of Utah, Salt Lake City, UT 84112
Abstract
We have modified Mach 3.0 to treat cross-domain remote procedure call
(RPC) as a single entity, instead of a sequence of message passing
operations. With RPC thus elevated, we improved the transfer of
control during RPC by changing the thread model. Like most operating
systems, Mach views threads as statically associated with a single
task, with two threads involved in an RPC. An alternate model is that
of migrating threads, in which, during RPC, a single thread
abstraction moves between tasks with the logical flow of control, and
``server'' code is passively executed. We have compatibly replaced
Mach's static threads with migrating threads, in an attempt to isolate
this aspect of operating system design and implementation. The key
element of our design is a decoupling of the thread abstraction into
the execution context and the schedulable thread of
control, consisting of a chain of contexts. A key element of our
implementation is that threads are now ``based'' in the kernel, and
temporarily make excursions into tasks via upcalls. The new system
provides more precisely defined semantics for thread manipulation and
additional control operations, allows scheduling and accounting
attributes to follow threads, simplifies kernel code, and improves RPC
performance. We have retained the old thread and IPC interfaces for
backwards compatibility, with no changes required to existing client
programs and only a minimal change to servers, as demonstrated by a
functional Unix single server and clients. The logical complexity
along the critical RPC path has been reduced by a factor of nine.
Local RPC, doing normal marshaling, has sped up by factors of
1.7 to 3.4. We conclude that a migrating-thread model is superior to a
static model, that kernel-visible RPC is a prerequisite for this
improvement, and that it is feasible to improve existing operating
systems in this manner.
Full paper appeared in Proceedings of
the Winter 1994 Usenix Conference.
spo@cs.utah.edu
Last modified on Tue Aug 8 1995.