|
The current trend in operating systems research is to allow
applications to dynamically extend the kernel to improve application
performance or extend functionality, but the most effective approach
to extensibility remains unclear. Some systems use safe languages
to permit code to be downloaded directly into the kernel; other
systems provide in-kernel interpreters to execute extension code;
still others use software techniques to ensure the safety of kernel
extensions. The key characteristics that distinguish these systems
are the philosophy behind extensibility and the technology used to
implement extensibility. This paper presents a taxonomy of the types
of extensions that might be desirable in an extensible operating
system, evaluates the performance cost of various extension techniques
currently being employed, and compares the cost of adding a kernel
extension to the benefit of having the extension in the kernel. Our
results show that compiled technologies (e.g. Modula-3 and software
fault isolation) are good candidates for implementing general-purpose
kernel extensions, but that the overhead of interpreted languages
is sufficiently high that they are inappropriate for this use.
|