
Safe Kernel Extensions
Overview
General-purpose operating systems are
ill-equipped to meet the quality of service (QoS)
requirements of complex real-time applications.
Consequently, many classes of real-time applications have
either been carefully developed to compensate for inadequate
system support, or they have been developed to run on
special purpose systems. This work focuses on a safe
extension architecture for general purpose systems, to allow
applications to customize the behavior of the system for
their individual needs. Using Linux as the basis for our
work, we enable application programmers to safely
incorporate `service extensions' into the kernel, so that
application-specific QoS guarantees can be provided. We
introduce the notion of `QoS safety', which is concerned
with meeting the QoS constraints of applications while
maintaining system integrity.
Our safe extension architecture supports the dynamic-linking of code into the address space of the kernel, to affect service management decisions. Using this approach, we are implementing several service managers (such as CPU and network service managers), that adapts the scheduling of various real-time tasks and network flows, to ensure their service constraints are met even when there are run-time changes in resource demands. Extensions are written in a type-safe language, to monitor and adapt resource usage on behalf of specific applications. By embedding code inside the kernel, finer-grained management of system resources can be achieved. Experimental results show that safe kernel extensions can lead to fewer service violations (and, hence, better qualities of service) for real-time tasks, compared to user-level methods that monitor and adapt system resources.
Our safe extension architecture supports the dynamic-linking of code into the address space of the kernel, to affect service management decisions. Using this approach, we are implementing several service managers (such as CPU and network service managers), that adapts the scheduling of various real-time tasks and network flows, to ensure their service constraints are met even when there are run-time changes in resource demands. Extensions are written in a type-safe language, to monitor and adapt resource usage on behalf of specific applications. By embedding code inside the kernel, finer-grained management of system resources can be achieved. Experimental results show that safe kernel extensions can lead to fewer service violations (and, hence, better qualities of service) for real-time tasks, compared to user-level methods that monitor and adapt system resources.
People
- Richard West
- Jason Gloudon
Related Projects
User-Level Sandboxing: | Efficient User-Level Sandboxing Techniques for Extensible Services. |
Linux
DWCS: |
Dynamic Window-Constrained Scheduling
for Linux. |
Selected Papers
|
[pdf][ps.gz] |
|
[pdf][ps.gz] |
Presentations
|
[pdf] |