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.
People