Abstract - Technical Program - OSDI 99
Interface and Execution Models in the Fluke Kernel
Bryan Ford, Mike Hibler, Jay Lepreau, Roland McGrath, Patrick Tullmann
University of Utah
Abstract
We have defined and implemented a kernel API that makes every exported
operation fully interruptible and restartable, thereby appearing
atomic to the user. To achieve interruptibility, all possible kernel
states in which a thread may become blocked for a "long" time are
represented as kernel system calls, without requiring the kernel to
retain any unexposable internal state. Since all kernel operations
appear atomic, services such as transparent checkpointing and process
migration that need access to the complete and consistent state of a
process can be implemented by ordinary user-mode processes. Atomic
operations also enable applications to provide reliability in a more
straightforward manner. This API also allows us to explore novel
kernel implementation techniques and to evaluate existing techniques.
The Fluke kernel's single source implements either the "process" or
the "interrupt" execution model on both uniprocessors and
multiprocessors, depending on a configuration option affecting a small
amount of code. We report preliminary measurements comparing fully,
partially and non-preemptible configurations of both process and
interrupt model implementations. We find that the interrupt model has
a modest performance advantage in some benchmarks, maximum preemption
latency varies nearly three orders of magnitude, average preemption
latency varies by a factor of six, and memory use favors the interrupt
model as expected, but not by a large amount. We find that the
overhead for restarting the most costly kernel operation ranges from
2-8% of the cost of the operation.
- View the full text of this paper in
HTML form and
PDF form.
- If you need the latest Adobe Acrobat Reader, you can download it from Adobe's site.
- To become a USENIX Member, please see our Membership Information.
|